1. 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: 
  1. //建立空白工作簿
  2. IWorkbook workbook = new HSSFWorkbook();
  3. //在工作簿中:建立空白工作表
  4. ISheet sheet = workbook.CreateSheet();
  5. //在工作表中:建立行,参数为行号,从0计
  6. IRow row = sheet.CreateRow(0);
  1. //在行中:建立单元格,参数为列号,从0计
  2. ICell cell = row.CreateCell(0);
  3. //设置单元格内容
  4. cell.SetCellValue("实习鉴定表");
  1.  
  1. 设置单元格样式:设置单元格样式时需要注意,务必创建一个新的样式对象进行设置,否则会将工作表所有单元格的样式一同设置,它们应该共享的是一个样式对象:
  1.  
  1. ICellStyle style = workbook.CreateCellStyle();
  2. //设置单元格的样式:水平对齐居中
  3. style.Alignment = HorizontalAlignment.CENTER;
  4. //新建一个字体样式对象
  1. IFont font = workbook.CreateFont();
  2. //设置字体加粗样式
  1. font.Boldweight = short.MaxValue;
  2. //使用SetFont方法将字体样式添加到单元格样式中
  1. style.SetFont(font);
  2. //将新的样式赋给单元格
  3. cell.CellStyle = style;

  1. 设置单元格宽高:
  1.   设置单元格的高度实际是设置其所在行高,所以要在单元格所在行上设置行高,行高设置数值好像是像素点的1/20,所以*20以便达到设置效果;
  1.   设置单元格的宽度实际上是设置其所在列宽,所以要在单元格所在列上设置(列的设置在工作表上),宽度数值好像是字符的1/256,所以*256以便达到设置效果。
  2.  
  1. //设置单元格的高度
  2. row.Height = 30 * 20;
  3. //设置单元格的宽度
  1. sheet.SetColumnWidth(0, 30 * 256);

合并单元格:合并单元格实际上是声明一个区域,该区域中的单元格将进行合并,合并后的内容与样式以该区域最左上角的单元格为准。

  1.  
  1. //设置一个合并单元格区域,使用上下左右定义CellRangeAddress区域
  2. //CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
  3. sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));

添加公式:使用Cell的CellFormula来设置公式,是一个字符串,公式前不需要加=号。

  1.  
  1.  
  1. //通过Cell的CellFormula向单元格中写入公式
  2. //注:直接写公式内容即可,不需要在最前加'='
  3. ICell cell2 = sheet.CreateRow(1).CreateCell(0);
  4. cell2.CellFormula = "HYPERLINK(\"测试图片.jpg\",\"测试图片.jpg\")";

将工作簿写入文件查看效果:

  1. //将工作簿写入文件
  2. using (FileStream fs = new FileStream("生成效果.xls", FileMode.Create, FileAccess.Write))
  3. {
  4. workbook.Write(fs);
  5. }
  1.  
  1. 最终效果:

参考资料:

  1. NPOI的下载地址:http://npoi.codeplex.com/
  1. NPOI的使用教程(中文):http://tonyqus.sinaapp.com/

出处:https://www.cnblogs.com/xwgli/archive/2013/05/03/3057824.html


设置Excel的自动筛选功能

最新导出数据需要使用Excel的筛选功能,网上多方查找,终于在一个繁体的网站上找到了方法,呃,这个网站还是Java的,讲的是POI,不过.NET的NPOI也就一样用了。

  1. CellRangeAddress c = CellRangeAddress.ValueOf("A1");
  2. sheet.SetAutoFilter(c);

通过设置要进行自动筛选的单个单元格或者多个单元格,然后在sheet上进行设置自动筛选。

(参考:http://www.javaworld.com.tw/jute/post/view?bid=11&id=301435

顺便一起说一个

单元格数字格式的问题

NPOI向Excel文件中插入数值时,可能会出现数字当作文本的情况(即左上角有个绿色三角),这样单元格的值就无法参与运算。这是因为在SetCellValue设置单元格值的时候使用了字符串进行赋值,默认被转换成了字符型。如果需要纯数字型的,请向SetCellValue中设置数字型变量。

以上两个问题的示例代码如下:

  1. //建立空白工作薄
  2. IWorkbook workbook = new HSSFWorkbook();
  3.  
  4. //在工作薄中建立工作表
  5. ISheet sheet = workbook.CreateSheet();
  6.  
  7. //填充筛选的内容
  8. sheet.CreateRow(0).CreateCell(0).SetCellValue("省份");
  9. sheet.CreateRow(1).CreateCell(0).SetCellValue("河北省");
  10. sheet.CreateRow(2).CreateCell(0).SetCellValue("湖南省");
  11.  
  12. //验证数字格式问题
  13. sheet.GetRow(1).CreateCell(2).SetCellValue("123");
  14. sheet.GetRow(2).CreateCell(2).SetCellValue(123);
  15.  
  16. //设置Excel的自动筛选
  17. CellRangeAddress c = CellRangeAddress.ValueOf("A1");
  18. sheet.SetAutoFilter(c);
  19.  
  20. //写文件
  21. using (FileStream fs = new FileStream("haha.xls", FileMode.Create, FileAccess.Write))
  22. {
  23. workbook.Write(fs);
  24. }

最终的效果显示:

更多NPOI相关:http://www.cnblogs.com/xwgli/category/467970.html

出处:https://www.cnblogs.com/xwgli/p/3178153.html

NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等的更多相关文章

  1. NPOI之Excel——合并单元格、设置样式、输入公式

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  2. npoi导出excel合并单元格

    需要引用NPOI.dll程序集和Ionic.Zip.dll程序集 string[] headerRowName = { "序号", "地市", "镇街 ...

  3. NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    NPOI.dll 用法.单元格,样式,字体,颜色,行高,宽度.读写excel 转载:http://yuncode.net/code/c_531e679b3896495 view source prin ...

  4. asp.net C#取Excel 合并单元格内容

    asp教程.net c#取excel 合并单元格内容读取excel数据,填充dataset// 连接字符串 string xlspath = server.mappath("~/www.11 ...

  5. NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

    NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...

  6. 创建excel,合并单元格,设置单元格样式

    package com.huawei.excel; import java.io.File;import java.io.FileOutputStream;import java.util.Date; ...

  7. 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

    我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

  8. java poi导出Excel合并单元格并设置边框

    import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...

  9. C# NPOI Excel 合并单元格和取消单元格

    1.合并单元操作 //合并单元格 /** 第一个参数:从第几行开始合并 第二个参数:到第几行结束合并 第三个参数:从第几列开始合并 第四个参数:到第几列结束合并 **/ CellRangeAddres ...

随机推荐

  1. angular 离开页面相关操作

    $scope.$on("$destroy", function() { $interval.cancel(autoRefresh);})

  2. angular2组件通讯的几种方式

    最近刚刚接触angular2,对ng2也是一知半解,如有说得不对的地方欢迎指出,欢迎加q共同探讨学习991085978: 1.通过输入型绑定把数据从父组件传到子组件 HeroChildComponen ...

  3. ibatis集成封装之路(to mysql)

    hello <tx:annotation-driven transaction-manager=" "/> 插入记录ID的坑 https://renjieguixion ...

  4. 设置环境下文本格式为UTF-8

    1.在页面创建一个template.txt文本格式,默认是ANSI,将其格式改为UTF-8 2.将template.txt丢到C:\Windows\ShellNew文件夹里面 3.打开命令行工具win ...

  5. robotframework·WEB端基础

    date:2018526 day10 一.导入库 导入的库分两种,一种是导入常用库,如String.Collections等(Library String.Collections,再运用库中的关键字) ...

  6. Java使用HttpClient上传文件

    Java可以使用HttpClient发送Http请求.上传文件等,非常的方便 Maven <dependency> <groupId>org.apache.httpcompon ...

  7. Enhancement in SAP abap.

    Recently I have been taught through how to do enhancement for those standard programs. Th reason for ...

  8. JSON的学习,希望可以指导

    1.JSON的介绍 是一种轻量级的数据交换格式.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 2.格式 JSON ...

  9. 基于NEO的私链(Private Blockchain)

    1.准备工作 1.NEO-GUI 2.NEO-CLI 3..NET Core Runtime (不能是2.x版本,官方建议是1.12,实际上我用1.14也是没有问题的) 4.四台windows操作系统 ...

  10. python自定义异常抛出接受多个数值

    在使用Python的时候,有时候想自己自定义异常错误,同时抛出多个参数,比如对数据库查找一条数据,如果没有找到,返回 {"errCode":"-1", &quo ...