Как получить значение ячейки с примененным форматированием (форматированное значение ячейки) с помощью OpenXML SDK

Я искал на сайте ответ, но не нашел решения - везде люди в основном обсуждают, как добавить новый числовой формат в документ и применить его.

Мне нужно получить значение ячейки в виде строки с примененным форматированием, т. Е. Той же строки, которая будет отображаться в Excel.

Я уже понял, что нет простого способа или встроенной функции, которая возвращала бы готовое форматированное значение для ячейки.

Мне кажется, что для получения ценности мне нужно сделать две вещи: 1. Получите строку формата. 2. Отформатируйте значение ячейки, используя эту строку.

Но у меня проблемы с обоими шагами.

Можно легко получить экземпляр CellFormat, который будет содержать NumberFormatId:

CellFormat cellFormat = (CellFormat) document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ElementAt(cell.StyleIndex);

Но как получить строку формата с этим NumberFormatId, если идентификатор соответствует одному из стандартных предопределенных форматов? (т.е. ниже 160) Их нет в электронной таблице, и я не могу поверить, что они должны быть жестко запрограммированы в приложении.

Кроме того, если каким-то образом получена строка формата, как применить ее к значению ячейки? Насколько я понимаю, код должен проверять тип значения ячейки, а если Number - преобразовывать его в строку, используя строку формата.

Я нашел эту страницу , на которой упоминается использование Microsoft.Office.Excel.Interop, но я бы предпочел остаться только с OpenXML SDK.

В целом, я очень удивлен, что в Интернете так сложно найти окончательный ответ на этот вопрос, поскольку я подумал, что это то, что нужно многим разработчикам в их повседневной работе.

14
задан amurra 19 January 2012 в 18:35
поделиться