poi操作Excel高階格式處理(隨專案更新)
阿新 • • 發佈:2018-12-14
前言:
隨著人們審美要求的提高,對於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列