Python处理Excel

Python的openpyxl可以高效的处理xlsx格式的excel文件,旧格式的xls文件需要其他库的支持。

安装

直接pip安装即可:

pip install openpyxl

新建、读取和保存

from openpyxl import Workbook, load_workbook
wb1 = Workbook()
wb2 = load_workbook('/tmp/test.xlsx')
#...
wb1.save('/tmp/test2.xlsx')

工作表操作

ws = wb1.worksheets[0]
ws = wb1['Sheet']
ws = wb1.active
ws = wb1.create_sheet('S2')
print(wb1.sheetnames) # 所有sheet的名字

单元格操作

# 取值
ws.cell(1,1) # the same as ws['A1']

# 赋值
ws['A1'] = 'NAME'
ws.cell(1, 1).value = 'Name'
ws.cell(1, 1, '名字')
print(ws['A1'].value)

#一次取多个单元格
ws['A1':'A3'] # or ws['A1:A3']

#一次取多行
ws['1:3'] # or ws['1':'3']

#一次取多列
ws['a']
ws['a:b']

print(ws.min_column, ws.max_column)
print(ws.min_row, ws.max_row)
for row in ws.rows:
  print(row[0].value)

高级功能

  • 使用Excel函数
ws['B6'] = '=AVERAGE(B2:B5)'
  • 插入图片
from openpyxl.drawing.image import Image
img = Image('/tmp/test.png')
ws.add_image(img, 'A7')

Pandas读取excel

Pandas借助openpyxl来读取和写入excel文件。如果要读取和写入xls格式,需要安装xlrd,xlwt(未来会取消对xls的写入支持:

pip install pandas openpyxl xlrd xlwt
import pandas as pd
data = pd.read_excel('/tmp/test.xlsx', "工作表 1")
data.to_excel('/tmp/a.xlsx')