cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
再加句cell.CellStyle=cellStyle; 试试
http://lennon.wang.blog.163.com/blog/static/213560620091116634569/
再加句cell.CellStyle=cellStyle; 试试
http://lennon.wang.blog.163.com/blog/static/213560620091116634569/
看这个例子
//创建工作薄
HSSFWorkbook wk = new HSSFWorkbook();
//创建一个名称为mySheet的表
ISheet tb = wk.CreateSheet("mySheet");
//创建一行,此行为第二行
IRow row = tb.CreateRow(1);
ICellStyle style11 = wk.CreateCellStyle();
style11.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
for (int i = 0; i < 20; i++)
{
ICell cell = row.CreateCell(i); //在第二行中创建单元格
cell.SetCellValue(i);//循环往第二行的单元格中添加数据
cell.CellStyle = style11; //要加上这行,
}
using (FileStream fs = File.OpenWrite(@"c:/myxls.xls")) //打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!
{
wk.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。
MessageBox.Show("提示:创建成功!");
}
非常感谢你的回复,但是导出的EXCEL还是文本格式的。
感觉这句代码没起作用: style11.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
//通过工作本创建一个“页”
ISheet sheet = workbook.CreateSheet("第一页");
ICellStyle style11 = wk.CreateCellStyle();
style11.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
单元格数字格式的问题NPOI向Excel文件中插入数值时,可能会出现数字当作文本的情况(即左上角有个绿色三角),这样单元格的值就无法参与运算。这是因为在SetCellValue设置单元格值的时候使用了字符串进行赋值,默认被转换成了字符型。如果需要纯数字型的,请向SetCellValue中设置数字型变量。
sheet.GetRow(2).CreateCell(2).SetCellValue(123);
double.TryParse(drValue, out doubV);
dataRow.CreateCell(j).SetCellValue(doubV);
switch (dtSource.Columns[oldColumnNames[i]].DataType.ToString())
{
case "System.String"://字符串类型
newCell.SetCellValue(drValue);
break;
case "System.DateTime"://日期类型
DateTime dateV;
DateTime.TryParse(drValue, out dateV);
newCell.SetCellValue(dateV); newCell.CellStyle = dateStyle;//格式化显示
break;
case "System.Boolean"://布尔型
bool boolV = false;
bool.TryParse(drValue, out boolV);
newCell.SetCellValue(boolV);
break;
case "System.Int16"://整型
case "System.Int32":
case "System.Int64":
case "System.Byte":
int intV = 0;
int.TryParse(drValue, out intV);
newCell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = 0;
double.TryParse(drValue, out doubV);
newCell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
newCell.SetCellValue("");
break;
default:
newCell.SetCellValue("");
break;
}
ICell cell = row.CreateCell(0, CellType.Numeric);
cell.SetCellType(CellType.Numeric);这两种都行的