在 Excel 中,单引号前缀用于指示该值是文本,不应转换为任何其他类型。 通常,查看工作簿时不显示单引号(但编辑单元格内容时可见)。
是否可以使用 openpyxl 将这样的值放入单元格中?我还没找到办法。
这是示例代码
import openpyxl
import os
wb = openpyxl.Workbook()
sheet = wb.get_active_sheet()
sheet.cell("A1", value="'value")
sheet.cell("B1").value = "'value"
sheet.cell("C1").set_explicit_value("'value", 's')
outpath = r"d:\dmishin\temp\wb.xlsx" #put your path here
wb.save(outpath)
os.startfile(outpath)
此代码创建一个包含 3 个单元格的工作表,并为它们添加“值”。我希望在查看时看到没有前导引号的文本,但我看到的是:
手动编辑创建此内容(请注意,编辑时仍然显示引用)
手动比较XLSX文件内容后,我的印象是有关报价的信息存储在单元格样式标签中,quotePrefix属性。
在 openpyxl 源代码中,CellStyle 类具有相应的布尔字段 quotePrefix。但是,我认为没有办法手动设置该字段。可以吗?
这是如何输入带有前导单引号的单元格值的代码示例:
from openpyxl import load_workbook
xlFilePath = "testquote.xlsx" #put your path here
wb = load_workbook(filename=xlFilePath)
ws = wb.worksheets[0]
_cell = ws.cell(1, 1)
_cell.quotePrefix = 1
_cell.value = "your_value"
wb.save(xlFilePath)
在单元格“A1”中,您将获得带有前导单引号的值:'your_value。
此外,查看工作簿时不显示单引号(但编辑单元格内容时可见)。
您不允许更改单元格上的
quotePrefix
属性,但如果您真的需要将 quotePrefix
设置为 True
,您可以更新单元格的 _style
属性,该属性具有 style_array (https ://openpyxl.readthedocs.io/en/stable/api/openpyxl.styles.cell_style.html#openpyxl.styles.cell_style.StyleArray) array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0])
,以便第 8 个值(应对应于 quotePrefix)为 1。
这显然不理想,但对我有用的是
ws['A1'] = "4"
我用过
ws['A1'] = "=4"
这阻止了撇号作为前缀添加到单元格的内容中。
在 Excel 中,您可以使用单引号来阻止 Excel 将数字字符串转换为数字。在 openpyxl 中,您不需要这样做,只需将单元格的值作为字符串分配,例如。
ws['A1'] = "4"
。
openpyxl 不支持
quotePrefix
属性。