我有一个Excel行,我需要在第一列中使用NPOI编写5
,在第二列中使用7.0
。编写这些值非常简单,但当我需要在同一行中写入时,5
的格式为5.0
。
要写5
,我使用:
public static void SetCellValue(IRow row)
{
var cell = row.CreateCell(1); // column 1
int value = 5;
cell.SetCellType(CellType.Numeric);
cell.SetCellValue(value);
// 5 is written
}
要写7.0
,我使用:
public static void SetCellValue(IRow row)
{
var cell = row.CreateCell(2); // column 2
int value = 7;
cell.SetCellType(CellType.Numeric);
cell.SetCellValue(value);
var dataFormat = cell.Sheet.Workbook.CreateDataFormat();
var strFormat = "0.0";
cell.CellStyle.DataFormat = dataFormat.GetFormat(strFormat);
// 7.0 is written
}
要写5
和7.0
,我正在使用:
public static void SetCellValue(IRow row)
{
var cell1 = row.CreateCell(1); // column 1
int value1 = 5;
cell1.SetCellType(CellType.Numeric);
cell1.SetCellValue(value1);
var cell2 = row.CreateCell(2); // column 2
int value2 = 7;
cell2.SetCellType(CellType.Numeric);
cell2.SetCellValue(value2);
var dataFormat = cell2.Sheet.Workbook.CreateDataFormat();
var strFormat = "0.0";
cell2.CellStyle.DataFormat = dataFormat.GetFormat(strFormat);
// 5.0 and 7.0 is written and not 5 and 7.0
}
有什么建议?我尝试使用5
和var strFormat = "0";
等格式来格式化第一个元素(数字var strFormat = "#";
),但它仍然是5.0
而不是5
附加说明:我正在使用NPOI version 2.1.1
答案 0 :(得分:1)
我喜欢NPOI,但有时我会遇到一些奇怪的错误。你的问题似乎就是其中之一。
要解决这个问题,你必须:
在Excel模板中创建一行,并根据需要对其进行格式化。
从格式化的内容中创建一个新行(您要写入的位置)。
int formattedRowIndex = 1;
int newRowIndex = 2;
IRow row = sheet.CopyRow(formattedRowIndex, newRowIndex);
row.CreateCell(1).setCellValue(5);
row.CreateCell(2).setCellValue(7);
// Output: 5 and 7.0
sheet.RemoveRow(formattedRowIndex);