【问题标题】:Getting exception "openpyxl.utils.exceptions.IllegalCharacterError"获取异常“openpyxl.utils.exceptions.IllegalCharacterError”
【发布时间】:2019-10-13 19:14:53
【问题描述】:

我正在使用 python 从 Oracle 11g 数据库中提取数据并将其写入 Excel 文件。在提取过程中,我使用 python 元组列表(每个元组表示数据集中的每一行)和 openpyxl 模块将数据写入 Excel。它对某些数据集运行良好,但对于某些数据集,它会抛出异常:

openpyxl.utils.exceptions.IllegalCharacterError

这是我已经尝试过的解决方案:

Openpyxl.utils.exceptions.IllegalcharacterError

这是我的代码:

for i in range(0,len(list)): 
    for j in range(0,len(header)): 
        worksheet_ntn.cell(row = i+2, column = j+1).value = list[i][j]

这是错误信息:

    raise IllegalCharacterError
openpyxl.utils.exceptions.IllegalCharacterError

【问题讨论】:

    标签: python oracle11g openpyxl cx-oracle


    【解决方案1】:

    异常告诉您需要知道的一切:您必须替换导致异常的字符。这可以使用re.sub() 来完成,但是,只有您可以决定要用什么替换它们——空格、空字符串等——只有你可以这样做。

    【讨论】:

    • 发生这种情况是因为数据集包含非法字符吗?如果是这样,那么我如何能够使用 Oracle SQL Developer 将相同的数据集提取到 Excel 中。
    • 是的,数据集包含非法字符。至于任何特定应用程序如何处理它们,您必须查阅相关文档。
    【解决方案2】:

    我确实收到了这个错误,因为我的一些字符串中有一些十六进制字符。

    'Suport\x1f_01'
    

    encode\decode 解决方案也与重音词混淆

    所以...

    我用 repr() 解决这个问题

        value = repr(value)
    

    给出一个安全的表示,带引号

    然后我删除第一个和最后一个字符

        value = repr(value)[1:-1]
    

    现在您可以在单元格上安全地插入值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 2013-03-01
      • 2019-05-15
      • 2018-08-14
      • 2012-12-21
      • 2018-08-18
      相关资源
      最近更新 更多