【已解决】openpyxl.utils.exceptions.IllegalCharacterError报错

本文讲述了在使用Pythonpandas写入xlsx文件时遇到的非法字符错误,通过正则表达式处理非法字符并推荐使用xlsxwriter库来避免数据丢失,确保完整写入18万行数据。
摘要由CSDN通过智能技术生成

python使用pandas写入xlsx文件报错openpyxl.utils.exceptions.IllegalCharacterError,原因是写入的内容里包含非法字符。

开头加上

import re
ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]')

写入xlsx文件的字符串前加上

text= ILLEGAL_CHARACTERS_RE.sub(r'', text)

即可正常写入了。


PS:建议直接使用xlsxwriter库,今天用pandas写入的时候明明append了18w行,结果保存的xlsx文件只有9w行,检查原因是有一个地方有特殊字符(下图),save的时候没有报错,直接就把后面的丢弃不保存了...xlsxwriter很正常,都能正常写入

下面是xlsxwriter写入的一个示例:

import xlsxwriter

# 创建一个Excel文件
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()

# 假设这是你的数据列表,每个子列表将写入到Excel的一行中
rows_of_data = [
    ['Header1', 'Header2', 'Header3'],  # 比如这可以是表头
    [1, 2, 3],
    [4, 5, 6],
    # ...更多的数据行
]

# 逐个单元格写入数据
for row_idx, row_data in enumerate(rows_of_data):
    for col_idx, data in enumerate(row_data):
        worksheet.write(row_idx, col_idx, data)
# 逐行写入数据
for row_num, row_data in enumerate(rows_of_data):
    # 使用write_row方法一次性写入一行
    worksheet.write_row(row_num, 0, row_data)

# 关闭workbook,这样数据才会实际写入到磁盘中的文件
workbook.close()

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值