poi操作Excel高级格式处理(随项目更新)
前言:
随着人们审美要求的提高,对于excel表格的格式也提出了相应的要求,针对每个项目模板的需求不同,excel所呈现的形式也是大相径庭。虽然我们为了方便维护管理,可以使用类似 **WindDistriButionReportToExcel extends ExportExcelBase2**泛型的方法简化操作。但是对于格式方面依据需要进行定制化处理。
问题一:有多张图片的情况之下,两两图片并排?
使用循环解决(今日无法上传图片,后期补上)
//如果勾选了某选项 判断图片长度依据条件取相应的图片
if(Integer.parseInt(stype[j]) == 3){
ROW = ROW + 3;
int start = 0;
if(cout == 16){
start = 0;
}
if(cout == 17){
//取1-16
start = 1;
}
if(cout == 18){
//取2-17
start = 2;
}
for (int i = start; i < start+15; i = i + 2,ROW = ROW + 21) {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
try {
bufferImg = ImageIO.read(new File(imagePath[i]));
bufferImg1 = ImageIO.read(new File(imagePath[i + 1]));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
ImageIO.write(bufferImg, "png", byteArrayOut);
ImageIO.write(bufferImg1, "png", byteArrayOut1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//创建一个图片容器
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFPatriarch patriarch1 = sheet.createDrawingPatriarch();
// col 图片的左上角的列数
// row 图片左上角开始的行数
// col1 图片右下角的列数
// row1 图片右下角的行数,
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255,
(short) 1, ROW, (short) 9, ROW+21);//在表格里面设置 与顶有多少距离,与左边有多少距离,后面是所占位置大小
HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 255, 255,
(short) 10, ROW, (short) 18, ROW+21);
anchor.setAnchorType(3);
anchor1.setAnchorType(3);
// 插入图片1
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
// 插入图片2
patriarch1.createPicture(anchor1, wb.addPicture(byteArrayOut1
.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
ROW = ROW + 3;
}
问题二:poi合并单元格,设置列宽
// 四个参数分别是:起始行,起始列,结束行,结束列
sheet.addMergedRegion(new CellRangeAddress(ROW, ROW, 1, 16));
//设置所有列宽
sheet.setDefaultColumnWidth((short) 14.5);
//定制某列列宽
sheet.setColumnWidth(0, 4 * 512);//设计宽度四位数,第0列