poi 列印格式程式碼設定
阿新 • • 發佈:2018-12-10
偷個懶,直接上程式碼吧,大家每一行我都寫註釋了的,更具需求可以自己設計自己的表格
@Action(value="outProductAction_print") public String print() throws Exception{ //HSSF 2003版 , XSSF 2007 版,07可以載入03,但03載入不來07 SXSSF HSSFWorkbook workbook = new HSSFWorkbook(); //建立筆記本 HSSFSheet sheet = workbook.createSheet();//建立表空間 sheet.setColumnWidth(1,25*256);//設定寬度 第一行 寬度25 sheet.setColumnWidth(2,10*256); sheet.setColumnWidth(3,25*256); sheet.setColumnWidth(4,10*256); sheet.setColumnWidth(5,25*256); sheet.setColumnWidth(6,10*256); sheet.setColumnWidth(7,25*256); sheet.setColumnWidth(8,10*256); HSSFCell createCell=null; //提升單元格的作用域 //大標題 int rownum=0; //設定行數為0,建立一次加一次,迴圈增加,就可以迴圈建立行數了 HSSFRow row = sheet.createRow(rownum++);//建立一行 row.setHeightInPoints(36); //設定高度 createCell = row.createCell(1); //建立一個單元格,重第2個算 sheet.addMergedRegion(new CellRangeAddress(0,0,1,8));//合併單元格 String replace = inputDate.replace("-0", "-").replace("-", "年")+"月出貨單";//把頁面傳過來的時間裝換成XXXX年X月格式 createCell.setCellValue(replace); //賦值到大標題內容中 createCell.setCellStyle(bigTitle(workbook));//呼叫下面大標題的樣式 //小標題 String[] smartStrs = {"客戶","訂單號","貨號","數量","工廠","工廠交期","船期","貿易條款"}; HSSFRow createRow = sheet.createRow(rownum++); //建立一行 createRow.setHeightInPoints(26); //設立高度 for (int i = 0; i < smartStrs.length; i++) {//迴圈資料 createCell = createRow.createCell(i+1);//建立單元格,迴圈一次,建立一個單元格 createCell.setCellValue(smartStrs[i]);//賦值 createCell.setCellStyle(title(workbook));//呼叫標題樣式 } //內容 //通過選擇的時間 查詢資料庫 由於預設語法中沒有我們要的語法,這裡我自定義了一個更具時間查詢的語法 ContractProduct:貨物表,其對應了合同表Contract 詳情表結構看一看做到物流雲專案 List<ContractProduct> findDateAll = contractProductServiceimpl.findDateAll(inputDate); System.out.println(findDateAll.size()); for (ContractProduct contractProduct : findDateAll) { row = sheet.createRow(rownum++); //建立一行 createRow.setHeightInPoints(26);//設定高度26 int i1=1; createCell = row.createCell(i1++);//客戶名 建立一個單元格 createCell.setCellValue(contractProduct.getContract().getCustomName());//賦值 createCell.setCellStyle(text(workbook));//引入樣式 createCell = row.createCell(i1++);//訂單號 createCell.setCellValue(contractProduct.getContract().getContractNo()); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//貨號 createCell.setCellValue(contractProduct.getProductNo()); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//數量 createCell.setCellValue(contractProduct.getCnumber()); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//工廠 createCell.setCellValue(contractProduct.getFactoryName()); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//工廠交期 //根據工具類UtilFuns的dateTimeFormat方法,把日期格式轉換成 String createCell.setCellValue(UtilFuns.dateTimeFormat(contractProduct.getContract().getDeliveryPeriod())); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//船期 createCell.setCellValue(UtilFuns.dateTimeFormat(contractProduct.getContract().getShipTime())); createCell.setCellStyle(text(workbook)); createCell = row.createCell(i1++);//貿易條款 createCell.setCellValue(contractProduct.getContract().getTradeTerms()); createCell.setCellStyle(text(workbook)); } //輸出 ByteArrayOutputStream os = new ByteArrayOutputStream();//new 一個io流 HttpServletResponse response = ServletActionContext.getResponse(); //建立一個Response DownloadUtil util = new DownloadUtil();//呼叫下載工具類 DownloadUtil workbook.write(os);//把工作薄裡的內容寫入io流中 util.download(os, response, replace + ".xls");//呼叫DownloadUtil工具類的download方法,設立下載檔名 os.close();//關閉流 return NONE; } ==============================下面的都是樣式,不必死記================================ //大標題的樣式 public CellStyle bigTitle(Workbook wb){ CellStyle style = wb.createCellStyle(); Font font = wb.createFont(); font.setFontName("宋體"); font.setFontHeightInPoints((short)16); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //字型加粗 style.setFont(font); style.setAlignment(CellStyle.ALIGN_CENTER); //橫向居中 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //縱向居中 return style; } //小標題的樣式 public CellStyle title(Workbook wb){ CellStyle style = wb.createCellStyle(); Font font = wb.createFont(); font.setFontName("黑體"); font.setFontHeightInPoints((short)12); style.setFont(font); style.setAlignment(CellStyle.ALIGN_CENTER); //橫向居中 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //縱向居中 style.setBorderTop(CellStyle.BORDER_THIN); //上細線 style.setBorderBottom(CellStyle.BORDER_THIN); //下細線 style.setBorderLeft(CellStyle.BORDER_THIN); //左細線 style.setBorderRight(CellStyle.BORDER_THIN); //右細線 return style; } //文字樣式 public CellStyle text(Workbook wb){ CellStyle style = wb.createCellStyle(); Font font = wb.createFont(); font.setFontName("Times New Roman"); font.setFontHeightInPoints((short)10); style.setFont(font); style.setAlignment(CellStyle.ALIGN_LEFT); //橫向居左 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //縱向居中 style.setBorderTop(CellStyle.BORDER_THIN); //上細線 style.setBorderBottom(CellStyle.BORDER_THIN); //下細線 style.setBorderLeft(CellStyle.BORDER_THIN); //左細線 style.setBorderRight(CellStyle.BORDER_THIN); //右細線 return style; } }