Python 操作 Excel 的相关问题与解决方案
我对一已存在 excel 表进行读写操作,该表含多 sheet,保存之后,却只有最后一个 sheet。
怎么才能对多 sheet 操作保存后,能达到想要的效果呢?
大致写法:
table = xlrd.open_workbook(“test.xls”, formatting_info=True)
ctable = copy(table)
p_sheet1 = ctable.get_sheet(0)
p_sheet2 = ctable.get_sheet(1)
…对 sheet1,sheet2,读写操作…
ctable.save(“test.xls”)
Python 操作 Excel 的相关问题与解决方案
保存的时候改名字
Python操作Excel主要有几个常用库,我来给你梳理一下。
pandas是最常用的,适合数据处理:
import pandas as pd
# 读取Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 数据处理
df['新列'] = df['原列'] * 2
# 写入Excel
df.to_excel('output.xlsx', index=False)
openpyxl适合处理.xlsx格式,功能更细:
from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.active
# 读取单元格
value = ws['A1'].value
# 写入数据
ws['B1'] = '新数据'
# 保存
wb.save('output.xlsx')
xlrd/xlwt处理老格式.xls文件:
import xlrd
import xlwt
# 读取
workbook = xlrd.open_workbook('old_data.xls')
sheet = workbook.sheet_by_index(0)
# 写入
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet('Sheet1')
new_sheet.write(0, 0, '数据')
new_workbook.save('output.xls')
简单说就是:用pandas做数据分析,openpyxl处理.xlsx格式,xlrd/xlwt处理老.xls文件。
总结建议:根据需求选合适的库就行。
xlutils
是改 sheet 的名字吗?文件名改是没有作用的
求详解
最关键的代码被你省略了。。。
啊?我就是使用 p_sheet1.write
()
换成 xlutils
BUT 为什么不用 openpyxl
同问,为什么不用 openpyxl ?
建议用 openpyxl,而且如果需要制作报表的话可以看看 [toaco/tablereport: A python library for making table report.]( https://github.com/toaco/tablereport),完全兼容 openpyxl,哈哈,溜了溜了
因为之前不知道有 openpyxl,为了图快速解决问题,所以选择自己知道的。
就是用的 xlutis.copy
其实更推荐你用 http://xlsxwriter.readthedocs.io/ 现在用.xls 的不多了
pandas 在保存 excel 的时候有一个参数 sheet_name, 了解一下

