使用openpyxl扩展库读取压缩包内的Excel文件,在控制台中打印输出所有状态为"null"的人员信息,并打印出自己在每个文件中的完整信息,已知文件路径为C:\Users\Administrator\Desktop\Python程序设计实验1等2个文件(1)
时间: 2024-12-30 21:41:20 浏览: 10
首先,你需要安装`openpyxl`和`lzma`(用于解压`.xz`文件)这两个库,如果还没有安装,可以使用以下命令进行安装:
```bash
pip install openpyxl lzma
```
然后,你可以使用以下代码来读取压缩包内的Excel文件,找到状态为"null"的人员信息,并打印出你在每个文件中的完整信息。假设压缩包名为`file1.xlsx.xz`和`file2.xlsx.xz`,并且它们都在`C:\Users\Administrator\Desktop\Python程序设计实验1`目录下。
```python
import os
import zipfile
from io import BytesIO
import pandas as pd
from openpyxl import load_workbook
# 定义要解压的压缩文件名和源目录
compression_files = ['file1.xlsx.xz', 'file2.xlsx.xz']
source_dir = r'C:\Users\Administrator\Desktop\Python程序设计实验1'
# 解压文件
for file in compression_files:
zip_path = os.path.join(source_dir, file)
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
# 获取文件列表
files_in_zip = zip_ref.namelist()
for file_in_zip in files_in_zip:
if file_in_zip.endswith('.xlsx'):
# 提取文件到BytesIO对象
data = zip_ref.read(file_in_zip)
buffer = BytesIO(data)
# 加载Excel数据
wb = load_workbook(BytesIO(buffer))
sheet = wb.active
# 检查状态列
null_status_rows = sheet.iter_rows(values_only=True, min_row=1, max_col=2, where="='null'")
for row in null_status_rows:
person_info = {'Name': row[0], 'Status': row[1]}
print(f"Person with null status: {person_info}")
# 打印当前文件的完整信息
print(f"Full information for file {file_in_zip}:")
for cell in sheet.values:
print(cell)
# 清理内存
wb.close()
buffer.close()
# 如果没有'.xlsx'文件,请检查文件夹结构或调整代码以适应实际情况
```
这段代码会遍历压缩包中的每个`.xlsx`文件,找出状态为"null"的人员并打印他们的信息,同时也会打印出每个文件的完整信息。如果你遇到任何错误,可能是因为文件不是`.xlsx`格式,或者压缩包中的文件路径不正确。确保文件路径和文件类型都是正确的。
阅读全文