POI 版本 3.15,java 使用框架 SpringBoot
先进行命名到处的 excel 的文件名,把汉字进行字节码转换
response.setHeader("Content-Disposition", "attachment;filename="
+new String(("内部讲师个人所得税推算公式").getBytes("gb2312"),"ISO-8859-1")+".xlsx");
创建 Workbook 和输出流
HSSFWorkbook workbook = new HSSFWorkbook();
OutputStream out = response.getOutputStream();
创建 Sheet 页
HSSFSheet sheet = workbook.createSheet("(导出)外部讲师审核表");
创建第一行和第一个单元格
// 第一行
HSSFRow row0 = sheet.createRow(0);
Cell cell00 = row0.createCell(0);
创建行高和单元格宽度
row0.setHeightInPoints(55);
sheet.setColumnWidth(0, 20*256);
合并单元格,参数分别是 开始行、 结束行、开始列、结束列
如合并第一个第一行第一个单元格到底 11 个单元格
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 11));
创建 workbook 样式
HSSFCellStyle style = workbook.createCellStyle();
创建设置字体的相关样式
font.setFontName("宋体");//设置字体名称
font.setFontHeightInPoints((short) 14);//设置字号
字体加粗
font.setBold(true);
创建有边框、左边框、下边框,让字体水平和垂直居中,把字体样式放到样式中
style.setBorderRight(BorderStyle._THIN_);//右边框
style.setAlignment(HorizontalAlignment._CENTER_); //水平居中
style.setVerticalAlignment(VerticalAlignment._CENTER_);//垂直居中
style.setBorderBottom(BorderStyle._THIN_);//下边框
style.setBorderLeft(BorderStyle._THIN_);//左边框
style.setFont(font);//选择需要用到的字体格式
单元格引用样式
cell00.setCellStyle(style);
给单元格自定义函数
如 定义 sum 函数从单元格 J3 + 到 J 的 list 集合长度 +2 个单元格
Integer n = list.size() + 2;
String num0 = "J" + n.toString();
cell9.setCellFormula("sum(J3:"+num0+")");
设置单元格样式,是 Double 类型的格式,可以用来写函数进行计算
cell[j].setCellValue(Double.parseDouble(value[i][j].toString()));
style.setDataFormat(HSSFDataFormat.getBuiltinFormat_("0.00"));
单元格位置不够的时候进行强制转换
style1.setWrapText(true); // 强制换行
给单元格赋值
cell15.setCellValue("备注:\n" );
给单元格设置背景色和背景色样式
style1.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);
style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
设置单元格的位置进行下拉菜单,参数分别是 开始行、结束行、开始列、结束列
如 从第三行第 12 列开始,到 list 长度 +2 个行数的 12 个单元格结算
String [] paymentList={"外付","合同","架构合同"};
String [] recommendList = {"主办方","移动学院"};
CellRangeAddressList regions = new CellRangeAddressList(2,list.size()+2,12,12);
CellRangeAddressList recommendRegions = new CellRangeAddressList(2,list.size()+2,13,13);
DVConstraint constraint = DVConstraint.createExplicitListConstraint(paymentList);
DVConstraint recommendConstraint = DVConstraint.createExplicitListConstraint(recommendList);
HSSFDataValidation dataValidation = new HSSFDataValidation(regions,constraint);
HSSFDataValidation validation = new HSSFDataValidation(recommendRegions,recommendConstraint);
sheet.addValidationData(dataValidation);
sheet.addValidationData(validation);
写下面的 sheet 可以定义一个二维数组存储表头列,把下面的数据查出来进行存储到定义的二维数组中
写下面的 sheet 的相关代码
先进行循环第一层,把表头取出来,然后再进行循环获取单个赋值进行取数据
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于