Как создать CellValue для десятичного с форматом (#, ###. ##) в OpenXML

После нескольких часов борьбы с этой проблемой, я решил спросить вас, если кто-то столкнулся с этой проблемой раньше.

В настоящее время я работаю над требованием экспортировать файл Excel с помощью платформы Open XML. Проблема, которая у меня есть, заключается в том, что один из столбцов этой таблицы должен быть десятичным в формате (#, ###. ##), который должен допускать суммы. Я мог бы отлично экспортировать excel в этом формате, используя следующий метод:

private static Cell CreateTextCell(string header, UInt32 index, object text, CellStyleIndex cellStyle) { var cell = new Cell { DataType = CellValues.InlineString, CellReference = header + index, StyleIndex = (UInt32)cellStyle }; var istring = new InlineString(); var t = new Text { Text = text.ToString() }; istring.AppendChild(t); cell.AppendChild(istring); return cell; } 

Как вы можете видеть, я указываю StyleIndex, который применяет формат, о котором я упоминал. Но проблема в том, что Excel распознает это значение как текст:

введите описание изображения здесь

Вот почему я попытался создать новый метод, который вызывается, как только я хочу создать десятичное число в файле:

 private static Cell CreateValueCell(string header, UInt32 index, decimal value, CellStyleIndex cellStyle) { var cell = new Cell { DataType = CellValues.Number, CellReference = header + index, StyleIndex = (UInt32)cellStyle, CellValue = new CellValue(value.ToString()) }; return cell; } 

Делая это, я понимаю, как преобразовать число, но я теряю десятичные знаки, как вы можете видеть на следующем изображении:

введите описание изображения здесь

Я видел класс с именем DecimalValue, но я не мог понять, как добавить его в ячейку. Любые мысли о том, как его решить? Заранее спасибо.

Вы должны прочитать эту статью .

Основная концепция – использование пользовательского CellFormat с NumberingFormat :

  var nformat4Decimal = new NumberingFormat { NumberFormatId = UInt32Value.FromUInt32(iExcelIndex++), FormatCode = StringValue.FromString("#,##0.0000") }; 
  • Результат OpenBSD Spreadsheet выводит сообщение «Общая ошибка» в OpenOffice при содержании большого количества строк
  • OpenXML для excel, foreach cell и row
  • Как установить фон ячеек?
  • Проблема в создании ячейки Date в Excel с использованием OpenXml в C #
  • Добавление изображения в excel с использованием openXML
  • Excel open xml sdk - Управление позицией диаграммы
  • OpenXML записывает значения в виде строки и при преобразовании в числа Изменение значений
  • применить цвет фона к определенной ячейке в excel с помощью openxml
  • Почему индекс стиля ячейки возвращает неправильное значение CellFormat при анализе excel-ячеек с помощью OpenXML SDK?
  • Невозможно использовать несколько шрифтов с OpenXMl Cell styling
  • Объединить ячейки в Excel с помощью «Openxml writer»
  • Interesting Posts

    Анализ данных из строки

    Таблица запросов Power.FillDown с условием

    Если ячейка в Excel содержит формулу массива (например, `= {1,2,3}`), я могу извлечь элементы массива с помощью VBA

    Запланированная задача VBA и «Application.OnTime»

    Обмен переменными между excel и visual basic

    Загрузить приложение из Outlook и Открыть в Excel

    Я хочу прочитать несколько листов excel в одном файле без использования OLEDB в C #

    Заполнение одномерного массива без цикла

    Прочитайте данные из excel в vb6 и поместите в datatable

    VBScript: как идентифицировать скрытые вкладки excel в excel с помощью vbscript

    Как подсчитать частоту символа в нескольких ячейках внутри столбца?

    Восстановление жирного текста в ячейке с помощью POI

    Как в excel найти правильный номер идентификатора из списка разных столбцов для сравнения с правильной ячейкой

    Укажите диапазон при чтении файла Excel через OLEDB

    EPPlus устанавливает сортировку по умолчанию в столбце

    Давайте будем гением компьютера.