Я гуглил и искал на сайте ответ, но решения не нашел - везде в основном обсуждают, как добавить в документ новый числовой формат и применить его.
Мне нужно получить значение ячейки в виде строки с примененным форматированием, т.е. той же строки, которая будет отображаться в Excel.
Я уже понял, что нет простого способа или встроенной функции, которая вернула бы готовое отформатированное значение для ячейки.
Так что мне кажется, что для получения значения мне нужно сделать две вещи: 1. Получить строку формата. 2. Отформатируйте значение ячейки, используя эту строку.
Но у меня проблемы с обоими шагами.
Можно легко получить экземпляр CellFormat, который будет содержать NumberFormatId:
CellFormat cellFormat = (CellFormat) document.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ElementAt(cell.StyleIndex);
Но как получить строку формата с этим NumberFormatId, если id соответствует одному из стандартных предопределенных форматов? (т.е. ниже 160) Их нет в табличном документе, и я не могу поверить, что они должны быть жестко запрограммированы в приложении.
Кроме того, как только строка формата каким-то образом получена, как применить ее к значению ячейки? Насколько я понимаю, код должен проверять тип значения ячейки и, если это число, преобразовать его в строку с использованием строки формата.
Я нашел эту страницу, на которой упоминается использование Microsoft.Office.Excel.Interop, но Я бы предпочел остаться только с OpenXML SDK.
В целом, я очень удивлен, что так трудно найти окончательный ответ на этот вопрос в Интернете, поскольку я думал, что это будет то, что нужно многим разработчикам в их повседневной работе.