Python处理Excel
Python可以很简介的处理数据,又是可以代替excel做一些繁杂的工作。
Excel有两种格式:
XLS是Office 2013或更早版本所使用的格式,是一种二进制格式的文件。XLSX则是用一系列XML文件组成的(最后的X代表了XML)一个压缩包。
1、工具包
XlsxWriter | xlrd&xlwt&xlutils | OpenPyXL | |
---|---|---|---|
介绍 | 可以创建和写Excel 2007+ XLSX文件 | xlrd、xlwt、xlutils三大模块分别提供读、写和其他功能 | 可以读、写Excel 2007+ /xlsm/xltx/xltm文件 |
读 | ✘ | √ | √ |
写 | √ | √ | √ |
修改 | ✘ | √ | ⚠️ |
.xls | ✘ | √ | ✘ |
.xlsx | √ | xlrd: 0.8.0+ √ * xlwt:✘ | √ |
大文件 | √ | ✘ | √ |
功能 | 强 | 弱 | 一般 |
速度 | 快 | 快 | 快 |
xlsxwriter
import xlsxwriter as xw
#只能用来创建新的文件,不能修改
workbook = xw.Workbook('hello.xlsx') # 建立文件
# 建立sheet, 可以work.add_worksheet('employee')来指定sheet名,但中文名会报UnicodeDecodeErro的错误
worksheet = workbook.add_worksheet('table1')
worksheet.write('A', 'Hello world') # 向A1写入
workbook.close()
import xlsxwriter as xw
workbook = xw.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
#设置样式启用
bold = workbook.add_format({'bold': True})
worksheet.write('A1', 'Hello')
#设置A2为黑体
worksheet.write('A2', 'World', bold)
#单元格从0开始
worksheet.write(2, 0, 123) # 第3行第1列
worksheet.write(3, 0, 123.456) # 第四行第1列
#插入图片
worksheet.insert_image('B5', 't.png')
workbook.close()
openpyxl
import openpyxl
# 读取excel中的数据
# 第一步:打开工作簿
wb = openpyxl.load_workbook('cases.xlsx')
# 第二步:选取表单
sh = wb['Sheet']
# 第三步:读取数据
# 参数 row:行 column:列
ce = sh.cell(row = 1,column = 1) # 读取第一行,第一列的数据
print(ce.value)
# 按行读取数据 list(sh.rows)
print(list(sh.rows)[1:]) # 按行读取数据,去掉第一行的表头信息数据
# 关闭工作薄
wb.close()
2、pandas
pandas是数据科学相关的包,其他也提供了对多种数据文件的io,也包括excel,能够大规模的进行io,但是底层的驱动还是基于以上的工具包。
#读出ok.xls中的Shell1表,这里使用的是xlrd包作为底层驱动
data=pd.read_excel('ok.xls','Sheet1')
print(data)
#写到xlsx文件中
data.to_excel("demo2.xlsx")
#选择一个驱动
data=pd.read_excel('cases.xlsx',engine="openpyxl")
print(data)
#读的底层调用
_engines = {
"xlrd": _XlrdReader,
"openpyxl": _OpenpyxlReader,
"odf": _ODFReader,
"pyxlsb": _PyxlsbReader,
}
Supported engines: "xlrd", "openpyxl", "odf", "pyxlsb", default "xlrd".
Engine compatibility :
- "xlrd" supports most old/new Excel file formats.
- "openpyxl" supports newer Excel file formats.
- "odf" supports OpenDocument file formats (.odf, .ods, .odt).
- "pyxlsb" supports Binary Excel files.
#写的底层调用,根据文件后缀选择驱动
_default_writers = {
"xlsx": "openpyxl",
"xlsm": "openpyxl",
"xls": "xlwt",
"ods": "odf",
}
xlsxwriter = import_optional_dependency(
"xlsxwriter", raise_on_missing=False, on_version="warn"
)