gpt4 book ai didi

python - 使用 openpyxl 写入 Excel 会产生不同的字符符号

转载 作者:行者123 更新时间:2023-12-04 14:07:09 25 4
gpt4 key购买 nike

以下是我的代码,用于向excel中插入一行

from openpyxl import Workbook  

wb = Workbook()
sheet = wb.active
i = ['an', '_xa100_list']
sheet.append(i)
wb.save('appending_values.xlsx')

问题是,在写入上述 excel 之后,当我打开文件时,我可以看到第二列的值是 '__ꄀlist__' 而不是 '_xa100_list'

'\_xa100\_' 在内部被替换为 '__ꄀ__'.

为什么会发生这种情况,我怎样才能将准确的 string 打印到 excel 而不是这种内部转换的形式?

最佳答案

讨论

显示该框是因为您没有使用带有 YI SYLLABLE DIT 的字体特点。这是在 UTF-16 中编码为 A100 的 unicode 字符。现在,为什么 Excel 将 _xa100_ 转换为 YI SYLLABLE DIT?原来 _x[bytes]_ 是 Excel 中的转义序列。尝试使用将呈现的内容:

from openpyxl import Workbook  

wb = Workbook()
sheet = wb.active
i = ['an', '_x0040_list']
sheet.append(i)
wb.save('appending_values.xlsx')

您应该在 Excel 中看到下表。这是因为 0040 是编码的 @

<表类="s-表"><头>AB<正文>一个@列表

解决方案

存在一个 hacky 解决方法:转义转义序列 _, 005F 的第一个字符。

from openpyxl import Workbook  

wb = Workbook()
sheet = wb.active
i = ['an', '_x005f_xa100_list']
sheet.append(i)
wb.save('appending_values.xlsx')

更多背景

这不是 Excel 独有的,这是 OOXML 设计的一部分, XLSX 文件的基本格式。这是一个 bug report从 2014 年开始与您的问题相关。以及规范的相关部分:

22.2.2.21 Properties (Application Specific File Properties)This element specifies the application properties of a document. For properties of type string, NCR escapeformat (_xHHHH_) is used for any invalid XML characters.[Note: The W3C XML Schema definition of this element’s content model (CT_Properties) is located in §A.6.2. endnote]

关于python - 使用 openpyxl 写入 Excel 会产生不同的字符符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67614622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com