1,使用maven导入依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2,编写对应的表头和样式,注意列宽自适应的配置
SXSSFWorkbook workbook = new SXSSFWorkbook();
SXSSFSheet sheet = workbook.createSheet("设备打包台账");
Map<String, CellStyle> styles = createStyles(workbook);
String[] head0 = new String[]{ "设备信息","木箱包装尺寸", "实际包装尺寸"};
String[] head1 = new String[]{"采购订单号/行项目号", "实际结算数量/m3", "差值", "下单地区", "下单时间", "需求车间", "申请人",
"打包方式","工段","线别","内部订单号","设备名称","设备描述","长/mm","高/mm","宽/mm","长/mm","高/mm","宽/mm",
"包装数量/m3","长/mm","高/mm","宽/mm","实际包装数量/m3","重量/kg","设备数量","车间测量人","计划收料确认人","品质负责人","记录录入人",
"打包日期","打包公司","打包公司确认人"};
List<Integer> notMergedList = Arrays.asList(13, 14, 15, 16, 17,18,19,20,21,22,23);
//设置第一行
SXSSFRow row = sheet.createRow(0);
row.setHeight((short) (26.5 * 20));
for(int i =0;i<head1.length;i++){
if (!notMergedList.contains(i)) {
inputValue( row.createCell(i),head1[i],styles.get("header"));
}
}
inputValue(row.createCell(13),head0[0],styles.get("header"));
//excel表也是从0行0列开始算起,注意自己设置合并的大小,避免已经设置值了的单元格也被合并导致代码报错
CellRangeAddress rowRegion = new CellRangeAddress(0, 0, 13, 15);
sheet.addMergedRegion(rowRegion); //进行合并
inputValue( row.createCell(16),head0[1],styles.get("header"));
CellRangeAddress rowRegion2 = new CellRangeAddress(0, 0, 16, 19);
sheet.addMergedRegion(rowRegion2); //进行合并
inputValue( row.createCell(20),head0[2],styles.get("header"));
CellRangeAddress rowRegion3 = new