Configure NPOI in different cells

I have a problem with setting a different format in each cell, I want to set the number format to a thousand separators and a thousandth separator with 3 decimal places, when the number is not integer, here is my code, I think the problem looks like every cell format is set to last setup fomat for loop

therefore, the conclusion should be like this: 12345 β†’ 12 345; 425 β†’ 425; 41.2 β†’ 41.2; 4578.25 β†’ 4 578.25

short doubleFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat("#,##0.###"); short intFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat("#,##0"); for (i = 0; i <= unorderedSheet.LastRowNum; i++) { NPOI.SS.UserModel.IRow newRow = orderedSheet.CreateRow(i); NPOI.SS.UserModel.IRow oldRow = unorderedSheet.GetRow(i); if (oldRow != null) { foreach (ICell oldCell in oldRow.Cells) { ICell newCell = newRow.CreateCell(mapping[n]); switch (oldCell.CellType) { case CellType.NUMERIC: newCell.SetCellType(CellType.NUMERIC); newCell.SetCellValue(oldCell.NumericCellValue); if (numberHasDecimals(oldCell.NumericCellValue)) { newCell.CellStyle.DataFormat = doubleFormat; } else { newCell.CellStyle.DataFormat = intFormat; } break; default: newCell.SetCellValue(oldCell.ToString()); break; }}}} 
+6
source share
1 answer
 static ICellStyle _doubleCellStyle = null; static ICellStyle _intCellStyle = null; static void SettingDifferentCellFormat( HSSFWorkbook hssfOutputWorkBook, ISheet orderedSheet, ISheet unorderedSheet ) { //short doubleFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat( "#,##0.###" ); //short intFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat( "#,##0" ); if ( _doubleCellStyle == null ) { _doubleCellStyle = hssfOutputWorkBook.CreateCellStyle(); _doubleCellStyle.DataFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat( "#,##0.###" ); } if ( _intCellStyle == null ) { _intCellStyle = hssfOutputWorkBook.CreateCellStyle(); _intCellStyle.DataFormat = hssfOutputWorkBook.CreateDataFormat().GetFormat( "#,##0" ); } for ( int i = 0; i <= unorderedSheet.LastRowNum; i++ ) { NPOI.SS.UserModel.IRow newRow = orderedSheet.CreateRow( i ); NPOI.SS.UserModel.IRow oldRow = unorderedSheet.GetRow( i ); const int mapping_n_ = 0; if ( oldRow != null ) { foreach ( ICell oldCell in oldRow.Cells ) { ICell newCell = newRow.CreateCell( mapping_n_ ); bool numberHasDecimals = true; switch ( oldCell.CellType ) { case CellType.NUMERIC: newCell.SetCellType( CellType.NUMERIC ); newCell.SetCellValue( oldCell.NumericCellValue ); if ( numberHasDecimals ) { //newCell.CellStyle.DataFormat = doubleFormat; newCell.CellStyle = _doubleCellStyle; } else { //newCell.CellStyle.DataFormat = intFormat; newCell.CellStyle = _intCellStyle; } break; default: newCell.SetCellValue( oldCell.ToString() ); break; } } } } }//SettingDifferentCellFormat 
+7
source

Source: https://habr.com/ru/post/959448/


All Articles