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