为啥 xlsxwriter 在我的单元格开头写 '

Posted

技术标签:

【中文标题】为啥 xlsxwriter 在我的单元格开头写 \'【英文标题】:Why does xlsxwriter write ' at the start of my cells为什么 xlsxwriter 在我的单元格开头写 ' 【发布时间】:2021-10-23 13:58:30 【问题描述】:

这是我的代码:

import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()

# Some data we want to write to the worksheet.


# Write a total using a formula.
worksheet.write_string(0, 0, '99999999001')
worksheet.write_string(0, 1, '99999999001')
worksheet.write_string(0, 2, '99999999001')
worksheet.write_string(0, 3, '99999999001')
worksheet.write_string(0, 4, '99999999001')
worksheet.write_string(0, 5, '99999999001')

workbook.close()

我正在使用

Ubuntu 20.04.2 LTS

XlsxWriter==3.0.1

LibreOffice 计算 版本:6.4.7.2

在 Libre 办公室单元格中包含以下内容: '99999999001 - 为什么 XlsxWriterr 在我的单元格开头添加撇号?

【问题讨论】:

【参考方案1】:

您在 Libreoffice 中的号码前的撇号仅说明单元格格式为 text 类型。它实际上不是单元格内容的一部分。有关详细信息,请参阅此链接:https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=49046

仅用于演示,在 Microsoft Excel 中打开生成的文件时,其中没有撇号:

【讨论】:

【参考方案2】:

将其解释为字符串,而不是数字。

如果值为“000123”,默认情况下,XLSX 会将其视为数字,您将看到“123”作为单元格值。缺少前导“零”。

如果前缀为撇号',它将被视为文本,您将看到原始输入“000123”。前导零不会消失。

前缀撇号非常有用,尤其是在您存储电话号码、社会身份号码、区号、会员编号或任何前导零对其数据识别至关重要的产品代码时。

【讨论】:

谢谢你的回答,我会选择另一个答案,因为它包含一个重要的细节 - 它实际上不是单元格内容的一部分,但我给了你一个加号,谢谢帮助 @Vasily 您使用的是worksheet.write_string( ),这表明您存储的是text,而不是数字。因此,XLSX 会将单元格值标记为TEXT

以上是关于为啥 xlsxwriter 在我的单元格开头写 '的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的单元格在我的 UITableView 中显示为空白?

为啥我的 UICollectionView 单元格在我的 swift ios 应用程序中不可点击?

如何强制Python XlsxWriter以自定义格式写入单元格

为啥我的视频没有显示在我使用 AVPlayer 的滚动视图的单元格中

为啥我的自动填充代码在我没有为 VBA 引用的单元格中显示 #N/A?

python xlsxwriter 在同一个单元格写入不同的格式文本