python excel 处理 xlrd & xlwt &xlutils


python excel 处理

方案一 xlrd & xlwt &xlutils

使用xlrd 用来读取 xls 文件

xlrd --> xls read

安装

pip install xlrd

使用

import xlrd

book = xlrd.open_workbook("myfile.xls") # 创建读取xls 对象

print("表格文件的sheet页有  {0}".format(book.nsheets))
print("表格文件的sheet页名: {0}".format(book.sheet_names()))
sh = book.sheet_by_index(0) # 选择第一页操作
print("{0} {1} {2}".format(sh.name, sh.nrows, sh.ncols))

for rx in range(sh.nrows): # 按行读取
    print(sh.row(rx))

for row in range(sh.nrows):  # 按单元格读取
    for col in ncols range(sh.ncols)
        print("单元格 内容  {0}".format(sh.cell_value(rowx=row, colx=col)))

注意

不支持以下内容

图表、宏、图片、任何其他嵌入式对象,包括嵌入式工作表。

VBA模块

公式,但会提取公式计算的结果。

评论

超链接

自动筛选、高级筛选、透视表、条件格式、数据验证

不支持受密码保护的文件,此库无法读取这些文件。

1.2.0 1.2.0 1.2.0 以上的版本不支持读取xlsx了很奇怪

image-20220113143140310

2020 的更新中这个库去除了对xls 以外格式的支持而1.2 版本只能支持python3.7

除此之外xlrd 都是好用的

使用xlwt 用来写入 xls 文件

xlwt --> xls write

安装

pip install xlwt

使用

from xlwt import Workbook

book = Workbook(encoding='utf-8') # 创建 Workbook 对象
sheet1 = book.add_sheet('Sheet 1') # 创建sheet页
book.add_sheet('Sheet 2')
sheet1.write(0,0,'A1') # 写入单元格
sheet1.write(0,1,'B1')
row1 = sheet1.row(1)
row1.write(0,'A2')
row1.write(1,'B2')

book.save('simple.xls') # 保存文件

image-20220113151559287

此库17年后就没有更新过了

xlutils :对于xlrd和xlwt 的扩展工具

安装

pip install xlutils

使用

from xlrd import open_workbook
from xlwt import easyxf
from xlutils.copy import copy
rb = open_workbook('source.xls',formatting_info=True)
rs = rb.sheet_by_index(0)
wb = copy(rb)
ws = wb.get_sheet(0)
plain = easyxf('')
for i,cell in enumerate(rs.col(2)):
 if not i:
 continue
 ws.write(i,2,cell.value,plain)
for i,cell in enumerate(rs.col(4)):
 if not i:
 continue
 ws.write(i,4,cell.value-1000)
wb.save('output.xls')

文档链接

链接:https://pan.baidu.com/s/1aSE9Q9BV2kwt1tmjrh0mCA 提取码:1234 --来自百度网盘超级会员V5的分享