关于使用JavaPOI 导出Excel多级联动
0.记录原因
最近有个需求是需要导出Excel模板,里面有涉及到某些字段只能做下拉选择,有单个下拉也有多级联动的。写了好久,在网上也查了很多资料,但是感觉不是很全面,所以走了很多弯路。由此,我整理了《关于使用JavaPOI导出Excel多级联动》的这份文档,和大家分享。
1.POI中的HSSF和XSSF的介绍
关于POI的介绍我就不多说了,大家查下API(http://poi.apache.org/apidocs/dev/org/apache/poi ),我就只说一下HSSF和XSSF:
HSSF主要是支持Excel2007版本之前的类,XSSF主要是支持Excel2007版本之后的类,自己感觉区别不大,但是在使用的时候会有一些细微的差别,后面会说到。
2.中间具体的一些方法的介绍
注:因为考虑到可能存在超过Excel数据规则长度的问题,所以我都采用的是引用sheet数据的方法。
- 创建WorkBook
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); - 创建Sheet页
XSSFSheet xssfSheet = xssfWorkbook.createSheet(sheetName);
xssfWorkbook.setSheetHidden(xssfWorkbook.getSheetIndex(sheetName), true);
//sheetName为String类型,就是一个名字。
//setSheetHidden的作用是设置sheet是否隐藏。 true:隐藏,false:显示 - 创建Row
XSSFRow xssfRow = xssfSheet.createRow(0);
//0代表创建第一行,Excel中行计数和列计数都是从0开始。 - 创建当前行的列
XSSFCell xssfCell = xssfRow .createCell(0);
//0代表创建第一列即第A列
xssfCell .setCellValue();
//为当前行的当前列设置值 - 设置数据规则(是应该这么说?)
Name name = xssfWorkbook .createName();
name .setNameName(“xx”);//定义一个名字
name .setRefersToFormula(sheetName+ " !$A 1 : 1: 1:A " + 参 数 ( i n t 类 型 ) ) ; / / s e t R e f e r s T o F o r m u l a 这 个 方 法 的 作 用 是 将 我 们 定 义 的 这 个 名 字 跟 我 指 定 的 数 据 进 行 对 应 , 例 如 s h e e t N a m e ! "+ 参数(int类型)); //setRefersToFormula这个方法的作用是将我们定义的这个名字跟我指定的数据进行对应,例如 sheetName! "+参数(int类型));//setRefersToForm