Openpyxl.utils.exceptions.IllegalcharacterError

问题描述 投票:0回答:6

我有以下Python代码将处理后的单词写入Excel文件。字数约为7729

From openpyxl import *
book=Workbook ()
sheet=book.active
sheet.title="test"
for x in range (7729):
    sheet.cell (row=1,column=x+1).value=x
book.save ('test.xlsx')

这就是我使用的代码的样子,但是当我运行它时,它给了我一个错误,上面写着

openpyxl.utils.exceptions.IllegalCharacterError

这是我第一次使用这个模块,我将不胜感激任何形式的帮助。

python openpyxl
6个回答
20
投票

openpyxl
自带非法字符正则表达式,随时供您使用。假设您很乐意简单地删除这些字符,您可以这样做:

import re
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
from openpyxl import *

book=Workbook ()
sheet=book.active
sheet.title="test"
for x in range (7729):
   sheet.cell (row=1,column=x+1).value = ILLEGAL_CHARACTERS_RE.sub(r'',x)
book.save ('test.xlsx')

为了加快速度,您可以将原始单元格值分配放在 try/ except 中,并且仅在捕获

openpyxl.utils.exceptions.IllegalCharacterError
时才运行重新替换。

来源:https://www.programmerought.com/article/43315246046/


8
投票

我遇到了类似的问题,发现这是因为 \xa1 字符,它是 ascii 26 (SUB) 的十六进制值。 Openpyxl 不允许写入此类字符(ascii 代码 < 32). I tried xlsxwriter 库没有任何问题,它会在 xlsx 文件中写入此字符。


1
投票

试试这个: 这段代码对我有用。

from openpyxl import *
book=Workbook ()
sheet=book.active
sheet.title="test"
x = 0
with open("temp.txt") as myfile :
    text = myfile.readline()
    while text !="":
            sheet.cell (row=1,column=x+1).value=str(text).encode("ascii",errors="ignore")
            x+=1
            text = myfile.readline()

book.save ('test.xlsx')

1
投票

最好的简单解决方案是安装 Xlwriter。

pip 安装 XlsxWriter


0
投票

您错过了为单元格添加值

sheet.cell (row=1,column=x+1).value =

尝试这样

from openpyxl import *
book = Workbook ()
sheet = book.active
sheet.title = "test"
for x in range (7):
    sheet.cell (row=1,column=x+1).value = "Hello"
book.save ('test.xlsx')

0
投票
import xlsxwriter
df.to_excel('abc.xlsx', engine='xlsxwriter')
© www.soinside.com 2019 - 2024. All rights reserved.