openpyxl - 如何用前导单引号输入值

问题描述 投票:0回答:4

在 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 个单元格的工作表,并为它们添加“值”。我希望在查看时看到没有前导引号的文本,但我看到的是:

Visible leading quote

手动编辑创建此内容(请注意,编辑时仍然显示引用)

No leading quote visible

手动比较XLSX文件内容后,我的印象是有关报价的信息存储在单元格样式标签中,quotePrefix属性。

在 openpyxl 源代码中,CellStyle 类具有相应的布尔字段 quotePrefix。但是,我认为没有办法手动设置该字段。可以吗?

python excel openpyxl
4个回答
2
投票

这是如何输入带有前导单引号的单元格值的代码示例:

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。

此外,查看工作簿时不显示单引号(但编辑单元格内容时可见)。


1
投票

您不允许更改单元格上的

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。


0
投票

这显然不理想,但对我有用的是

ws['A1'] = "4"

我用过

ws['A1'] = "=4"

这阻止了撇号作为前缀添加到单元格的内容中。


-3
投票

在 Excel 中,您可以使用单引号来阻止 Excel 将数字字符串转换为数字。在 openpyxl 中,您不需要这样做,只需将单元格的值作为字符串分配,例如。

ws['A1'] = "4"

openpyxl 不支持

quotePrefix
属性。

© www.soinside.com 2019 - 2024. All rights reserved.