用Python读取/解析Excel(xls)文件
用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ý)。