在项目开发经常需要读写excel,可以使用OleDb读写Excel,但是由于Excel不是数据库,字段的类型不是事先定义好的,在更新单元格内容时,总是提示“标准表达式中数据类型不匹配”,原因时单元格格式问题 。需要在执行更新脚本前,批量修改列的单元格格式。
使用NPOI可以在不关心客户端电脑Office版本的情况下,更新Excel单元格格式,代码如下:

        public void ModifySheetCellFormat(){#region 打开Excel表格模板,并初始化到NPOI对象中IWorkbook wk = null;string extension = System.IO.Path.GetExtension(sExcelFilename);FileStream fs = File.OpenRead(sExcelFilename);if (extension.Equals(".xls"))wk = new HSSFWorkbook(fs);elsewk = new XSSFWorkbook(fs);fs.Close();#endregion//List<string> SheetNames = new List<string>();//for (int i = 0; i < wk.NumberOfSheets; i++)//{//    SheetNames.Add(wk.GetSheetName(i));//}string sheetname = SelectedSheetName.Substring(1, SelectedSheetName.Length - 3);ISheet sheet = wk.GetSheet(sheetname);IRow row = null;//数据行ICell cell = null;//数据行中的某列for (int i = 0; i < sheet.PhysicalNumberOfRows; i++){row = sheet.GetRow(i);cell = row.GetCell(1);IDataFormat dataformat = wk.CreateDataFormat();ICellStyle style0 = wk.CreateCellStyle();style0.DataFormat = dataformat.GetFormat("@");//转化为汉字大写cell.CellStyle = style0;cell = row.GetCell(52);IDataFormat dataformat2 = wk.CreateDataFormat();ICellStyle style1 = wk.CreateCellStyle();style1.DataFormat = dataformat.GetFormat("@");//转化为汉字大写cell.CellStyle = style1;}FileStream file = new FileStream(sExcelFilename, FileMode.Create);wk.Write(file);file.Close();}

NPOI定义单元格格式有以下种类(参考链接):

            IDataFormat dataformat = wk.CreateDataFormat();ICellStyle style0 = wk.CreateCellStyle();style0.DataFormat = dataformat.GetFormat("[DbNum2][$-804]General");//转化为汉字大写ICellStyle style1 = wk.CreateCellStyle();style1.DataFormat = dataformat.GetFormat("0.0"); //改变小数精度【小数点后有几个0表示精确到小数点后几位】ICellStyle style2 = wk.CreateCellStyle();style2.DataFormat = dataformat.GetFormat("#,##0.0");//分段添加,号ICellStyle style3 = wk.CreateCellStyle();style3.DataFormat = dataformat.GetFormat("0.00E+00");//科学计数法ICellStyle style4 = wk.CreateCellStyle();style4.DataFormat = dataformat.GetFormat("0.00;[Red]-0.00");//正数与负数的区分ICellStyle style5 = wk.CreateCellStyle();style5.DataFormat = dataformat.GetFormat("# ??/??");//整数部分+分数ICellStyle style6 = wk.CreateCellStyle();style6.DataFormat = dataformat.GetFormat("??/??");//分数ICellStyle style7 = wk.CreateCellStyle();style7.DataFormat = dataformat.GetFormat("0.00%");//百分数【小数点后有几个0表示精确到显示小数点后几位】

使用NPOI设置Excel单元格格式相关推荐

  1. .net 导出html 到excel 合并单元格,C#导出Excel,并且设置Excel单元格格式,合并单元格....

    注:要添加COM组件 Microsoft Excel 11.0 Object Library  引用. 具体代码如下: using System; using System.Collections.G ...

  2. 巧用快捷键轻松设置Excel单元格格式

    巧用快捷键轻松设置Excel单元格格式 在应用程序中使用快捷键,可以使我们避免在键盘与鼠标之间来回切换,从而节省大量的时间,显著地提高工作效率.多掌握一些常用的快捷键,可以使您告别菜鸟时代,迅速成长为 ...

  3. POI中设置Excel单元格格式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  4. 【POI框架实战】——POI设置Excel单元格格式

    背 景 "这个excel中的数据怎么不能做加法啊?"."标头这一行的字体怎么这么小啊,我都看不清"."这一列能不能换个颜色,明显一些".&q ...

  5. java设置Excel单元格格式 POI

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:先获取工作薄对象:HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.cr ...

  6. C#使用NPOI设置Excel单元格背景颜色(xls,xlsx)

    每次用到这个都要去百度,这里记录一下,xls和xlsx两种格式设置背景颜色的区别,这里省略了前面读取模板或者创建excel的过程: xls: ICellStyle style = workbook.C ...

  7. C#中设置Excel单元格格式

    1.全表自动列宽 mysheet.Cells.Select(); mysheet.Cells.Columns.AutoFit(); 2.合并    excelRangeParm.Merge(Missi ...

  8. python excel 单元格格式_python设置单元格数值格式

    python xlwt如何设置单元格格式 python xlwt模块怎么设置excel单元格的属性 如图,默认是general.我想写入的时候就是Text类型.请问应该怎么做. from xlwt i ...

  9. python 设置excel单元格式,Python xlwt设置excel单元格字体及格式

    Python xlwt设置excel单元格字体及格式 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python xlwt设置excel单元格字体及格式.txt  ...

最新文章

  1. linux下面安装jdk
  2. python编写函数_浅谈Python 函数式编程
  3. python 清除字符串中的 emoji 表情
  4. java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...
  5. java中用swing实现绘画_【年度盘点】最受欢迎的5大Java练习项目
  6. Hive已死,SparkSQL来啦~
  7. Feign 重试解析
  8. 【“免费”Windows优秀软件推荐】:Groupy——窗口皆可浏览器标签化
  9. android手机能安装win10,微软或推可在安卓设备上安装的Win10系统ROM
  10. 600、000、002、200、300、400等开头的股票代表什么?
  11. 论车牌识别与电子警察关系
  12. 数据结构(三)—— 树(1):树与树的表示
  13. 沈阳大学博客网站的设计与实现
  14. 基于奇异值分解的图片压缩
  15. [C语言编程练习][17]假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?
  16. 【奇奇怪怪的bug】删除文件显示「找不到该项目」怎么办
  17. [有感]_给天蓝管理层的诺干建议
  18. 设计神经网络的基本原则,神经网络设计与实现
  19. 蓝牙、WiFi、ZigBee三大无线通信技术协议模块哪一个是最好的?
  20. layui富文本编辑器(layedit)的使用

热门文章

  1. 飞鸽传书不能使用的问题
  2. 微信开发者工具使用方法
  3. JavaScript获取元素与绑定事件onclick事件
  4. vue 报错:Module not found:Error:Can't resolve 'vuex' in XXX
  5. 电商产品的购物车,这些细节你注意了吗?
  6. Android10.0 版本兼容
  7. linux下运行comsol,COMSOL5.3在Linux下的安装
  8. spring中编程式事务与声明式事务
  9. 小说人物的身份、行为挖掘,技术角度解读《庆余年》,深度挖掘小说语料 -02...
  10. 用c 语言如何实现鼠标画图,C在控制台上实现鼠标画图功能