Working with Excel Files in Python

1 哪些包可以优雅的处理 excel?

在对 excel 进行一些操作时,可以使用 python 进行处理。常见的操作有增加、删除、修改等,经过一段时间的使用分析,确定比较好用的有以下几个,各有各的特点以及注意事项,以此记录。

  • xlrd
  • xlwt
  • xlutils
  • openpyxl
  • pandas

下面一一介绍。

2 xlrd & xlwt

xlrd - xlrd 2.0.1 documentation

最多处理 6 万多行

xlrd 主要用于读取 excel 文件,其主要针对于 xls 格式的 excel 文件,但是实际使用过程中是可以读取 xlsx 格式文件的。

xlwt 主要用于写入 excel 文件,其只能将文件保存为 xls 格式,而不能保存为 xlsx 格式。这两个包都主要是针对于老版本(office 2003)的 excel处理。

常见操作以及示例代码如下:

# xlrd
workbook = xlrd.open_workbook(filepath)   # 读取文件
sheets = workbook.sheet_names()           # 读取excel文件中所有的表单名字
worksheet = workbook.sheet_by_name(sheets[0])   # 使用第一个表单sheet

# 读取内容
worksheet.cell_value(row,col)  # 读取第row行第col列的单元格的值,**注意,row和col是从0起的**
worksheet.row_values(row)      # 取出第row+1行的数据
worksheet.col_values(row)      # 取出第row+1行的数据
# xlwt
workbook = xlwt.Workbook(encoding = 'utf-8')  # 生成excel文件格式的对象
worksheet = workbook.add_sheet('result')      # 在此对象内创建名字为result的sheet
worksheet.write(row,col,value)                # 将value写入row行col列,**注意,row和col是从0起的**

3 xlutils

这个包是前面两个包的一个封装,包含了前面两个包所需的所有的依赖,能进行相应的操作。所以在使用时,可能会需要前面两个模块创建的对象,主要用来执行 copy 操作。执行完 copy 操作之后,将会获得原 excel 一样的内容和表格,结合 xlwt 一起,可以实现对表格的修改。

示例代码如下:

from xlutils.copy import copy
old_excel = xlrd.open_workbook(filepath)
new_excel = copy(old_excel)

4 openpyxl

最多可以处理几百万行

官方推荐使用的工具,操作与前文的类似,但是也有缺点。可以直接使用这个包进行增删改查等操作。默认下标是从 1 开始

示例代码如下:

# 打开excel
workbook = openpyxl.load_workbook(filepath)
sheets = workbook.sheetnames
worksheet = workbook[sheets[0]]

# 创建表格
wb.create_sheet(0) # 在第一个位置创建表格
wb.create_sheet()  # 在末尾创建表格

# 读取excel
maxrow = worksheet.max_row  # 最大行数
maxcol = worksheet.max_col  # 最大列数
value = worksheet.cell(row,col).value   # 读取单元格的值

rows = worksheet.iter_rows(min_row, max_col, max_row)  # 按行读取
rows = worksheet.iter_cols(min_row, max_col, max_row)  # 按列读取

# 写入excel文件
worksheet.cell(row,col).value = value  # 直接赋值
worksheet.append([a,b,c])  # 按行写入

# 保存文件
workbook.save("filename")

5 Pandas

数据分析库,使用不多,待补充