本文编写于 552 天前,最后修改于 552 天前,其中某些信息可能已经过时。

xlwt 超过 65536 条数据如何写入 xlsx

原因

今天使用 python 的 xlwt 模块进行数据处理工作,第一次遇到了如下错误

ValueError: row index was 65536, not allowed by .xls format

才知道 xls 是只支持 65536 行的内容的,如果要处理更多的数据就不能用 xlwt 模块

解决方案

  1. 分 sheet,一到 65536 就分第二个 sheet
  2. 使用 xlsx 格式,使用 openpyxl 扩展实现相关功能

openpyxl 的使用方法

openpyxl 最多支持 1048576 行单表数据,很适合我们的项目

安装 openpyxl

pip install openpyxl

使用 openpyxl

import openpyxl

def readExel():
    filename = r'D:\test.xlsx'
    inwb = openpyxl.load_workbook(filename)  # 读文件
    sheetnames = inwb.get_sheet_names()  # 获取读文件中所有的sheet,通过名字的方式
    ws = inwb.get_sheet_by_name(sheetnames[0])  # 获取第一个sheet内容

    # 获取sheet的最大行数和列数
    rows = ws.max_row
    cols = ws.max_column
    for r in range(1,rows):
        for c in range(1,cols):
            print(ws.cell(r,c).value)
        if r==10:
            break

def writeExcel():
    outwb = openpyxl.Workbook()  # 打开一个将写的文件
    outws = outwb.create_sheet(index=0)  # 在将写的文件创建sheet
    for row in range(1,70000):
        for col in range(1,4):
            outws.cell(row, col).value = row*2  # 写文件
        print(row)
    saveExcel = "D:\\test2.xlsx"
    outwb.save(saveExcel)  # 一定要记得保存

然后就知道怎么使用了

参考

  1. [已解决]ValueError: row index was 65536, not allowed by .xls format
  2. python xlwt 写入 excel 操作