python修改excel(不修改原格式)
使用xlwt虽然可以编辑excel中的数据,但假如原本的表格中一些单元格是带格式的,例如加粗,颜色不一样等,编辑后这些格式都会丢失。
因为编辑过程是先把整个表格先复制一遍,然后在复制的数据上进行修改,最终再把编辑好的数据保存到原本的表格中进行覆盖,xlwt复制是不会复制表格文本的格式的,所以修改后的数据覆盖原本的数据就把格式给弄丢了。
使用openpyxl模块来编辑表格就没这样的问题,用它来修改表格,原来的格式依旧存在,使用方法如下:
下载openpyxl
1
pip install openpyxl
打开已存在表格
1
2from openpyxl import load_workbook
wb = load_workbook('表格.xlsx')获取工作表
1
sheet = wb.get_sheet_by_name('Sheet1')
获取单元格
1
2
3
4#方式一
cell = sheet['A1']
#方式二
cell = sheet.cell(row=1, column=1)设置单元格数据
1
cell.value = 'hello'
保存到表格内
1
wb.save('表格.xlsx')
使用汇总
安装
1
pip install openpyxl
打开文件
2.1 创建、保存
1
2
3
4python
from openpyxl import Workbook
wb = Workbook()
wb.save('hehe.xlsx')2.2 打开已存在文件
1
2form openpyxl import load_workbook
wb = load_workbook('hehe.xlsx')工作簿操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18wb = load_workbook('hehe.xlsx')
#获取工作簿中的列表
print(wb.sheetnames)
#查看是否只读
print(wb.read_only)
#文档编码
print(wb.encoding)
#创建表
sheet1 = wb.create_sheet('sheet1')
sheet2 = wb.create_sheet('sheet2', 0) #插到开始位置
#选择表格
sheet = wb.get_sheet_by_name('sheetname'))
sheet = wb['sheetname']
sheet = wb.active #获取当前活跃的woksheet工作表(sheet)操作
1
2
3
4
5
6
7
8
9sheet = wb['sheetname']
#获取最大行数/列数
rows_num = sheet.max_row
col_num = sheet.column
#获取所有的行/列
rows = sheet.rows
columns = sheet.columns单元格(cell)操作(单个单元格)
1
2
3
4
5
6
7
8
9
10#访问单元格
cell = sheet['A1']
cell = sheet.cell(row=4, column=1)
#获取单元格数据
value = cell.value
#修改单元格内容
cell.value = 'hehe' #方式一
sheet.cell(1, 2, 10) #方式二多单元格操作
1
2
3
4
5
6
7
8
9
10
11
12#选择整行
row = sheet[10]
#选择多行
rows = sheet[1:10]
#选择整列
col = sheet['C']
#选择多列
cols = sheet['C:D']
#获取多个单元格
cell_range = sheet['A1':'C2']
7.