我正在尝试使用NPOI库在Excel中创建双重和数字格式单元格。我使用了像
这样的代码Dim cell As HSSFCell = row.CreateCell(j)
cell.SetCellValue(Double.Parse(dr(col).ToString))
在excel中,数字正确对齐,但当我检查格式时,它显示在“常规”
中
然后我将代码改为以下
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格式显示在“数字”
错误显示如下。
如何解决这个问题?
答案 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);