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

使用openpyxl、xlsxwriter写入Excel时报错如何解决?

两个Excel写入报错的原因及解决方案

1. openpyxl抛出openpyxl.utils.exceptions.IllegalCharacterError

报错原因

openpyxl写入字符串时会强制校验字符合法性,不允许写入ASCII控制字符(\0、\x01-\x1f范围内的不可见控制符,部分未定义的特殊Unicode字符也会被拦截),你的data变量转字符串后包含了这类非法字符,触发校验失败报错。

解决方法

写入前用正则清洗掉所有非法控制字符,保留Excel允许的换行、回车、制表符即可:

import re
import openpyxl

wb = openpyxl.load_workbook('results.xlsx')
wb.create_sheet('Output')
ws = wb['Output']

# 过滤非法控制字符,保留常用的可识别控制符
illegal_pattern = re.compile(r'[\x00-\x08\x0b-\x0c\x0e-\x1f]')
cleaned_data = illegal_pattern.sub('', str(data))
ws.append([cleaned_data])

wb.save('results.xlsx')
wb.close()

注:原代码中你没有调用wb.save(),即使不报错修改也不会写入到文件中,需要补充保存逻辑。


2. xlsxwriter抛出AttributeError: 'NoneType' object has no attribute 'group'

报错原因

你调用worksheet.write()的参数格式错误:xlsxwriter的write方法要求前两个参数必须为写入位置的行索引、列索引(从0开始计数),第三个参数才是写入内容。你仅传入了data一个参数,方法内部参数解析逻辑拿到预期外的空值,触发属性调用报错。

解决方法

补全写入位置参数,写完后调用close保存文件即可:

import xlsxwriter

workbook = xlsxwriter.Workbook('results.xlsx')
worksheet = workbook.add_worksheet('Output')
# 示例是写入到A1单元格(行索引0,列索引0),可按需调整位置
worksheet.write(0, 0, str(data))

workbook.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:04