openpyxl - как поставить значение с одинарной кавычкой - PullRequest
0 голосов
/ 25 апреля 2018

В 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.Однако я не вижу способа вручную установить это поле.Возможно ли это?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Вы не можете изменять атрибут 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]), так что восьмое значение (которое должно соответствовать quotePrefix) равно 1.

0 голосов
/ 06 июня 2019

Это пример кода, как вставить значение ячейки с первой одинарной кавычкой:

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.

Более того, одинарная кавычка не отображается при просмотре книги (но отображается при редактировании содержимого ячейки).

0 голосов
/ 26 апреля 2018

В Excel вы используете одинарную кавычку, чтобы остановить преобразование Excel числовой строки в число.В openpyxl вам это не нужно, просто присвойте ячейке значение в виде строки, например.ws['A1'] = "4".

openpyxl не поддерживает атрибут quotePrefix.

...