NPOI формат номера Excel не отображается в листе Excel в ASP.NET

StackOverflow https://stackoverflow.com/questions/3425931

Вопрос

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

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

В номерах Excel выравниваются правильно, но когда я проверяю формат, он отображается в «General»

alt text

Тогда я изменил свой код, чтобы понравиться ниже

 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 показывает в «номере»

Ошибка ошибок похоже на ниже.

alt text

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

Это было полезно?

Решение

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

Другие советы

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 row = лист.createrows (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

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

Я предполагаю, что ты бы «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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top