使用NPOI在Excel中设置整数值

时间:2014-12-29 21:52:20

标签: c# excel excel-2007 npoi

我有一个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
}

要写57.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
}


有什么建议?我尝试使用5var strFormat = "0";等格式来格式化第一个元素(数字var strFormat = "#";),但它仍然是5.0而不是5


附加说明:我正在使用NPOI version 2.1.1

1 个答案:

答案 0 :(得分:1)

我喜欢NPOI,但有时我会遇到一些奇怪的错误。你的问题似乎就是其中之一。

要解决这个问题,你必须:

  1. 在Excel模板中创建一行,并根据需要对其进行格式化。

  2. 从格式化的内容中创建一个新行(您要写入的位置)。

  3. int formattedRowIndex = 1;
    int newRowIndex = 2;
    IRow row = sheet.CopyRow(formattedRowIndex, newRowIndex);
    
    1. 在不应用任何其他格式的情况下编写值。
    2. row.CreateCell(1).setCellValue(5);
      row.CreateCell(2).setCellValue(7);
      
      // Output: 5 and 7.0
      
      1. 删除虚拟行:
      2. sheet.RemoveRow(formattedRowIndex);