在Python中读取.xlsx格式
我需要每10分钟用Python读取一次.xlsx文件。
有什么最有效的方法吗?
我试过用xlrd这个库,但它不能读取.xlsx文件——根据说明书说是可以的,但我却做不到,出现了不支持的格式,或者文件损坏
的错误。
读取.xlsx文件的最佳方法是什么?
我还需要读取单元格里的评论。
3 个回答
5
有很多方法可以用Python读取XLSX格式的文件。下面介绍了两种方法,至少需要安装openpyxl,如果你想直接解析到pandas中,还需要安装pandas,比如可以用命令 pip install pandas openpyxl
。
选项1:直接使用pandas
主要用途:加载数据以便进一步处理。
使用pandas中的 read_excel() 函数是最好的选择。需要注意的是,pandas会自动使用openpyxl,但如果遇到格式问题,最好直接指定使用的引擎。
df_pd = pd.read_excel("path/file_name.xlsx", engine="openpyxl")
选项2:直接使用openpyxl
主要用途:获取或编辑特定的Excel文档元素,比如评论(这是提问者的要求)、格式属性或公式。
使用 load_workbook() 函数,然后通过 comment属性 提取每个单元格的评论,可以这样实现。
from openpyxl import load_workbook
wb = load_workbook(filename = "path/file_name.xlsx")
ws = wb.active
ws["A1"].comment # <- loop through row & columns to extract all comments
5
下面是一些使用Openpyxl的基本示例:
import openpyxl
# Open Workbook
wb = openpyxl.load_workbook(filename='example.xlsx', data_only=True)
# Get All Sheets
a_sheet_names = wb.get_sheet_names()
print(a_sheet_names)
# Get Sheet Object by names
o_sheet = wb.get_sheet_by_name("Sheet1")
print(o_sheet)
# Get Cell Values
o_cell = o_sheet['A1']
print(o_cell.value)
o_cell = o_sheet.cell(row=2, column=1)
print(o_cell.value)
o_cell = o_sheet['H1']
print(o_cell.value)
# Sheet Maximum filled Rows and columns
print(o_sheet.max_row)
print(o_sheet.max_column)
8
xlrd 还没有发布可以读取 xlsx 文件的版本。在这之前,Eric Gazoni 创建了一个叫做 openpyxl 的工具包,它可以读取 xlsx 文件,并且可以有限地写入这些文件。