NPOI формат номера Excel не отображается в листе Excel в ASP.NET
Вопрос
Я пытаюсь создать двойные и цифровые ячейки формата в Excel с использованием библиотеки NPOI. Я использовал код как
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
В номерах Excel выравниваются правильно, но когда я проверяю формат, он отображается в «General»
Тогда я изменил свой код, чтобы понравиться ниже
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 показывает в «номере»
Ошибка ошибок похоже на ниже.
Как это исправить?
Решение
Взгляни на это, Вы создаете объект 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);