NPOI устанавливает явный тип столбца Не работает должным образом

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

Я использую следующий код для достижения этого.

  var row = sheet.CreateRow(currentNPOIRowIndex++);
                    for (var colIndex = 0; colIndex < exportData.Columns.Count; colIndex++)
                    {
                        ICell cell = null;
                         cell = row.CreateCell(colIndex);
                        if (exportData.Columns[colIndex].DataType == typeof(DateTime))
                        {
                            if (exportData.Rows[rowIndex][colIndex].ToString() != "")
                            {
                                cell.SetCellValue((DateTime)exportData.Rows[rowIndex][colIndex]);
                                cell.CellStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)book.CreateCellStyle();
                                cell.CellStyle.DataFormat = book.CreateDataFormat().GetFormat("yyyyMMdd HH:mm:ss");
                                cell = null;
                            }
                            else
                                cell.SetCellValue(exportData.Rows[rowIndex][colIndex].ToString());
                        }
                        else
                            cell.SetCellValue(exportData.Rows[rowIndex][colIndex].ToString());
                    }
                }

Приведенный выше код отлично работает для 42 строк, т.е. он правильно устанавливает тип столбца, но после 42 строк тип столбца не применяется.

Любая помощь будет высоко оценена.


person Muhammad Taqi    schedule 18.08.2017    source источник
comment
Вы можете попробовать последний код. Я предоставил вам свое рабочее решение. благодаря.   -  person kumar chandraketu    schedule 22.08.2017


Ответы (1)


вам потребуется установить стиль столбца по умолчанию, если вы хотите установить формат столбца для всех ячеек этого столбца. См. приведенный ниже пример из формата xssf. Синтаксис может отличаться для вашего формата hssf, но он даст вам представление о том, чего вам не хватает.

Я предоставляю вам свой рабочий код. Я использую NPOI версии 2.2.1.0. можете ли вы прокомментировать строку //cell = null;

XSSFWorkbook workbook = new XSSFWorkbook();
  XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("Template");

  XSSFFont defaultFont = (XSSFFont)workbook.CreateFont();
  defaultFont.FontHeightInPoints = (short)10;

  XSSFCellStyle headerStyle = (XSSFCellStyle)workbook.CreateCellStyle();
  headerStyle.WrapText = true;

  XSSFCellStyle defaultStyle = (XSSFCellStyle)workbook.CreateCellStyle();
  XSSFDataFormat defaultDataFormat = (XSSFDataFormat)workbook.CreateDataFormat();
  defaultStyle.SetDataFormat(defaultDataFormat.GetFormat("000-000-0000"));
  defaultStyle.FillBackgroundColor = IndexedColors.LightYellow.Index;                
  defaultStyle.FillForegroundColor = IndexedColors.LightTurquoise.Index;
  defaultStyle.SetFont(defaultFont);

  var row = sheet.CreateRow(0);
  for (int headerCount = 0; headerCount < headers.Count(); headerCount++)
  {
      row.CreateCell(headerCount).SetCellValue(headers[headerCount]);
      row.Cells[headerCount].CellStyle = headerStyle;
      sheet.SetDefaultColumnStyle(headerCount, defaultStyle);          
  }
person kumar chandraketu    schedule 18.08.2017
comment
Я попробовал ваше решение, но все еще существует та же проблема, формат применяется до 42 строк. - person Muhammad Taqi; 22.08.2017