为什么XlsxWriter写入的单元格在LibreOffice中开头多了单引号?
问题原因说明
- 你观察到的开头单引号是LibreOffice Calc的专属隐式文本前缀标识,并不实际存在于XlsxWriter生成的xlsx文件内容中。
- 你调用
write_string写入的是纯文本格式的纯数字字符串,LibreOffice为了区分「用户主动定义为文本的数字串」和「被误设为文本格式的数值」,默认会给符合数值格式的文本内容加上这个单引号标识,该标识仅在编辑栏显示,不会被打印,复制单元格内容到其他位置时也不会被带出。 - 该差异是办公软件的显示逻辑导致的,和XlsxWriter的写入逻辑无关:将生成的文件用微软Excel打开时,不会显示这个额外的单引号。
可选解决方案
如果不需要显示这个标识,可任选以下方式处理:
- 修改LibreOffice Calc显示配置:依次打开「工具」→「选项」→「LibreOffice Calc」→「视图」,取消勾选「值转换/显示引号标记」即可全局隐藏该前缀。
- 如果该数字串不需要保留文本格式,直接使用
write_number方法写入数值类型内容,不会触发该标识。 - 写入时指定文本格式,示例代码如下:
import xlsxwriter workbook = xlsxwriter.Workbook('Expenses01.xlsx') worksheet = workbook.add_worksheet() # 定义文本格式 text_format = workbook.add_format({'num_format': '@'}) # 写入时绑定格式 worksheet.write(0, 0, '99999999001', text_format) # 其余单元格写入同理 workbook.close()
内容的提问来源于stack exchange,提问作者Vasily
相关产品推荐
相关产品推荐

