С# NPOI устанавливает стиль ячейки в текст/строка 1-19 форматируется как дата/отключает любое форматирование

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

Есть ли способ заставить лист не использовать какие-либо формулы или форматирование? Я проверил, и формат данных является строкой.

 private void Test1(ref ISheet worksheet, string[] array, IWorkbook workbook, int iRow, XSSFFont font2)
        {
            var format = HSSFDataFormat.GetBuiltinFormats();

            ICellStyle _TextCellStyle = workbook.CreateCellStyle();
            _TextCellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("@");
            IRow file = worksheet.CreateRow(iRow);
            int iCol = 0;
            for (int y = 0; y < array.Length; y++)
            {
                ICellStyle style = workbook.CreateCellStyle();

                style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Grey25Percent.Index;
                //style.DataFormat = HSSFDataFormat.
                ICell cell = file.CreateCell(iCol, CellType.String);
                cell.SetCellValue(array[y]);
                style.SetFont(font2);
               // cell.CellStyle = style;
                var getst = cell.CellType;
                cell.CellStyle = _TextCellStyle;
                iCol++;
                getst = cell.CellType;

            }

        }

person China Syndrome    schedule 26.07.2017    source источник
comment
Я не думаю, что это проблема форматирования. Это Excel выполняет автоматическую проверку ошибок. Он думает, что ячейка содержит дату! Вам лучше поставить ' перед вашими 1-19....   -  person user3454439    schedule 10.08.2017


Ответы (1)


Ваши данные остаются в формате «Общий» даже после того, как вы используете правильную строку формата «@» в соответствии с документацией. Иногда библиотечные методы не работают в NPOI, поэтому вам придется попробовать другой подход.

Вы можете попробовать один из этих

 _TextCellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("text"); //Instead of "@"

Или добавьте одинарную кавычку к данным при записи для файла Excel, например '1-19.

person kumar chandraketu    schedule 28.07.2017
comment
Работал как шарм - person China Syndrome; 10.08.2017