Числовой формат Excel NPOI не отображается на листе Excel в asp.net

Я пытаюсь создать ячейки двойного и числового формата в Excel, используя библиотеку NPOI. Я использовал код как

Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))

В Excel номера выравниваются правильно, но когда я проверяю формат, он показывает в "Общие"

альтернативный текст

Затем я изменил свой код, как показано ниже

 Dim cell As HSSFCell = row.CreateCell(j)
 cell.SetCellValue(Double.Parse(dr(col).ToString))
 Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle
 cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0")
 cell.CellStyle = cellStyle

Затем, открывая файл, он выдает ошибку, а также занимает много времени, чтобы открыть. Но формат Excel отображается в "Число"

ошибка отображается как ниже.

альтернативный текст

Как это исправить?

4 ответа

Решение

Посмотрите на это, вы создаете объект cellStyle для каждой ячейки? Если это не так. Попробуйте создать пару стилей перед созданием ячеек, а затем примените эти предопределенные стили к создаваемым ячейкам.

Чтобы исправить слишком много разных стилей ячеек, объявите все стили вне цикла, который вы можете запустить.

Я предполагаю, что вы 'j' будете перечислителем, поэтому я отброшу то, что у вас было, в исправленном для вас формате.

Dim cellStyle As HSSFCellStyle = hssfworkbook.CreateCellStyle
cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("#,#0.0")

For col = 0 To ColoumCounter
  For j = 0 To Counter
    Dim cell As HSSFCell = row.CreateCell(j)
    cell.SetCellValue(Double.Parse(dr(col).ToString))
    cell.CellStyle = cellStyle
  Next
Next

Это должно работать немного лучше, ограничивая количество "новых" стилей.

Создайте стиль, но этот стиль для столбца

 ICellStyle _TextCellStyle = wb1.CreateCellStyle();

 _TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@");
 sheet.SetDefaultColumnStyle(2, _TextCellStyle);

Hare - это простой способ создания двойного формата в документе Excel с использованием NPOI.

//make NUMERIC Format in Excel Document // Author: Akavrelishvili
  var eRow = sheet.CreateRow(rowIndex); //create new Row , rowIndex - it's integer, like : 1,2,3
  eRow.CreateCell(0).SetCellValue(row["ProvidName"].ToString()); //create cell and set string value

  double Amount = Convert.ToDouble(row["Amount"].ToString()); //convert string to double
  eRow.CreateCell(1).SetCellValue(Amount); // create cell and set double value.

Это рабочая версия, я использовал много проектов.

Очень трудно вставить формат DateTime в Excel. В Интернете нет хорошего примера, и я думаю, что это помогает людям сделать это правильно. Я покажу вам пример кода:

     //make Date Time Format in Excel Document // Author: Akavrelishvili

var eRow = sheet.CreateRow (rowIndex); // создаем новую строку // rowIndex - это целое число, например: 1,2,3

 ICellStyle cellDateStyle = workBook.CreateCellStyle(); //create custom style
 cellDateStyle.DataFormat = workBook.CreateDataFormat().GetFormat("dd/mm/yyyy"); //set day time Format

 eRow.CreateCell(3).SetCellValue(Convert.ToDateTime(row["Date"])); //set DateTime value to cell
                    eRow.GetCell(6).CellStyle = cellDateStyle; // Restyle cell using "cellDateStyle"


I hope it helps
Другие вопросы по тегам