You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xlwt/xlrd生成xls文件超出最大行数限制该如何解决

根因说明

你遇到的报错是*.xls格式(Excel 97-2003版本标准)的原生硬限制,单个工作表最多仅支持65536行、256列,没有任何工具可以突破该格式本身的存储上限。

可落地解决方案(均满足保留.xls格式的要求)
  • 方案1:拆分数据到同一文件的多个工作表
    单工作表存满65535行(若需预留表头行可自行调整上限)后,自动创建新工作表继续存储,xlwt本身支持单个.xls文件创建多个工作表,只要单表不超上限就不会触发报错,参考实现代码如下:
import xlwt

# 单sheet最大存储行数,有表头时预留1行设为65535,无表头可设为65536
MAX_ROW_PER_SHEET = 65535
wb = xlwt.Workbook(encoding='utf-8')
sheet_idx = 0
current_sheet = wb.add_sheet(f'sheet_{sheet_idx}')
current_row = 0

# 你的数据源可自行替换为迭代器、数据库查询结果等
data_source = [你的数据]
# 如需表头可在初始化sheet后先写入表头,current_row同步+1
# header = ['列1', '列2', '列3']
# for col, val in enumerate(header):
#     current_sheet.write(0, col, val)
# current_row = 1

for row_data in data_source:
    if current_row >= MAX_ROW_PER_SHEET:
        # 满行后新建工作表
        sheet_idx += 1
        current_sheet = wb.add_sheet(f'sheet_{sheet_idx}')
        current_row = 0
        # 新建sheet后需要重复写表头的话,在这里重新执行表头写入逻辑,current_row同步+1
    # 写入当前行数据
    for col, val in enumerate(row_data):
        current_sheet.write(current_row, col, val)
    current_row += 1

wb.save('目标文件.xls')
  • 方案2:拆分数据到多个独立的.xls文件
    如果业务规则要求单个.xls文件只能有一个工作表,可每存满65536行就生成一个新的.xls文件,按序号命名即可,拆分逻辑和上述多sheet逻辑类似,仅需把新建sheet的操作替换为新建workbook并保存上一个workbook即可。
  • 方案3:更换更高效的.xls生成库
    如果对写入速度有要求,可替换xlwt为pyexcelerate库,该库同样支持生成标准.xls格式文件,写入效率比xlwt高3~10倍,同样遵循.xls单表行数限制,配合上述拆分逻辑即可正常使用。

内容的提问来源于stack exchange,提问作者Juan Andrade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:06