NPOI Excel数字格式未在asp.net的Excel工作表中显示

时间:2010-08-06 16:50:26

标签: c# asp.net vb.net excel npoi

我正在尝试使用NPOI库在Excel中创建双重和数字格式单元格。我使用了像

这样的代码
Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))

在excel中,数字正确对齐,但当我检查格式时,它显示在“常规”

alt text

然后我将代码改为以下

 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格式显示在“数字”

错误显示如下。

alt text

如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

看看this,你在为每个细胞创建一个cellStyle对象吗?如果是这样的话。在创建单元格之前尝试创建几种样式,然后将这些预定义样式应用于您创建的单元格。

答案 1 :(得分:0)

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.

这是工作版本,我已经使用了很多项目。

很难在Excel中插入DateTime格式,在互联网上没有很好的例子,我认为它可以帮助人们正确地做到这一点。 我给你看了代码示例:

     //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

答案 2 :(得分:0)

要修复太多不同的单元格样式,请声明可能正在运行的任何循环之外的所有样式。

我认为你'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

通过限制“新”样式的数量,这应该会更好一些。

答案 3 :(得分:0)

然后为列创建一个样式

 ICellStyle _TextCellStyle = wb1.CreateCellStyle();

 _TextCellStyle.DataFormat = wb1.CreateDataFormat().GetFormat("@");
 sheet.SetDefaultColumnStyle(2, _TextCellStyle);