1. 程式人生 > >poi操作Excel高階格式處理(隨專案更新)

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列