用Python读取/解析Excel(xls)文件

153 投票
13 回答
394257 浏览
提问于 2025-04-15 23:22

用Python读取Excel(XLS)文件的最佳方法是什么?(不是读取CSV文件)

Python里有没有自带的工具可以直接用来完成这个任务?

13 个回答

35

你可以选择其中任何一个,http://www.python-excel.org/
我推荐使用 Python 的 xlrd 库。

你可以通过以下方式安装它:

pip install xlrd

使用以下代码导入这个库:

import xlrd

要打开一个工作簿,可以这样做:

workbook = xlrd.open_workbook('your_file_name.xlsx')

通过名称打开工作表:

worksheet = workbook.sheet_by_name('Name of the Sheet')

通过索引打开工作表:

worksheet = workbook.sheet_by_index(0)

读取单元格的值:

worksheet.cell(0, 0).value    
63

你可以使用pandas来完成这个任务,首先需要安装所需的库:

$ pip install pandas openpyxl

下面是代码:

import pandas as pd

xls = pd.ExcelFile(r"yourfilename.xls") # use r before absolute file path 

sheetX = xls.parse(2) #2 is the sheet number+1 thus if the file has only 1 sheet write 0 in paranthesis

var1 = sheetX['ColumnName']

print(var1[1]) #1 is the row number...
109

我强烈推荐使用 xlrd 来读取 .xls 文件。不过,这个库有一些限制(具体可以查看 xlrd 的 GitHub 页面):

警告

这个库现在只能读取 .xls 文件,其他格式的文件无法读取。如果你需要读取更新的文件格式,可以看看 http://www.python-excel.org/

以下内容也不被支持,但会被安全可靠地忽略:

- Charts, Macros, Pictures, any other embedded object, including embedded worksheets.
- VBA modules
- Formulas, but results of formula calculations are extracted.
- Comments
- Hyperlinks
- Autofilters, advanced filters, pivot tables, conditional formatting, data validation

带密码保护的文件不被支持,这个库无法读取这些文件。

voyager 提到了使用 COM 自动化。几年前我也尝试过这个,提醒你一下,这个过程真的很麻烦。需要注意的事项非常多,而且文档也不够完善,甚至让人感到烦躁。我遇到了很多奇怪的错误和问题,有些问题花了我好几个小时才搞明白。

更新:

对于更新的 .xlsx 文件,推荐使用的读取和写入库似乎是 openpyxl(感谢 Ikar Pohorský)。

撰写回答