在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。但是,我看不到手动设置此字段的方法。有可能吗?
答案 0 :(得分: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。
答案 1 :(得分:1)
这是代码示例,该代码示例如何在单元格值中添加前导单引号:
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”中,您会获得一个带引号的单引号:“您的值”。
此外,在查看工作簿时不会显示单引号(但在编辑单元格内容时可见)。
答案 2 :(得分:-2)
在Excel中,您使用单引号来停止Excel将数字字符串转换为数字。在openpyxl中,您不需要这样做,只需将值作为字符串分配给单元格,例如。 ws['A1'] = "4"
。
openpyxl不支持quotePrefix
属性。