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()