Я гуглял и искал на сайте ответ, но я не мог найти решение - везде люди в основном обсуждают, как добавить новый формат чисел в документ и применить его.
Мне нужно получить значение ячейки в виде строки с примененным форматированием - то есть той же самой строки, которая будет отображаться в 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.
В целом, я очень удивлен, что так сложно найти окончательный ответ на этот вопрос в Интернете, так как я думал, что это будет то, что нужно многим разработчикам в своей повседневной работе.