Числовой формат 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