| 
					
				 | 
			
			
				@@ -18,6 +18,7 @@ import org.apache.poi.hssf.usermodel.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.ss.usermodel.BorderStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.ss.usermodel.HorizontalAlignment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.poi.ss.usermodel.VerticalAlignment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.ss.util.CellRangeAddress; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -213,13 +214,14 @@ public class TWarehousebillsfeesServiceImpl implements ITWarehousebillsfeesServi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 在 workbook 中添加一个sheet,对应 excel 文档中的 sheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         HSSFSheet sheet = wb.createSheet("分项明细"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 获取 cell 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HSSFCellStyle cellStyle = getCellStyle(wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellTitleStyle = getCellStyle(wb,"center",true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellContentStyle = getCellStyle(wb,"center",true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 创建标题,合并标题单元格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 行号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int rowNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int rowNum = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 第一行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         HSSFRow first = sheet.createRow(rowNum++); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String[] left = {"序号", "业务类型", "作业类型", "提单号", "货名", "客户", "件数", "重量", "体积", "入库时间", "计算天数", "货物堆存费"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String[] left = {"序号", "业务类型", "作业类型", "提单号", "货名", "客户", "件数", "重量", "体积", "入库时间","出库时间", "计算天数", "货物堆存费"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<String> middle = tFeesMapper.selectTFeesNameList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String[] right = {"金额", "计划员", "计费时间", "结费时间", "仓库", "备注"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -228,15 +230,29 @@ public class TWarehousebillsfeesServiceImpl implements ITWarehousebillsfeesServi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         all.addAll(middle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Collections.addAll(all, right); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建并获取大标题样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /*HSSFCellStyle cellBigTitleStyle = getCellStyle(wb,"center",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CellRangeAddress cBigTitle = new CellRangeAddress(0,0,0,all.size()/4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setBigTitle("青岛大木仓配物流有限公司现场收费统计表(仓储业务)",0,sheet,cellBigTitleStyle,cBigTitle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setFont(cellBigTitleStyle,wb,"宋体",11,true);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建并获取统计范围时间样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellRangeTimeStyle = getCellStyle(wb,"center",false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CellRangeAddress cRangeTimeTitle = new CellRangeAddress(1,1,0,all.size()/9); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setBigTitle("统计范围:" + billDetailsSubItem.getDateRange(),1,sheet,cellRangeTimeStyle,cRangeTimeTitle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setFont(cellRangeTimeStyle,wb,"宋体",11,false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int size = all.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (int i = 0; i < size; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             HSSFCell tempCell = first.createCell(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (i > 11 && i < size - 6) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (i > 12 && i < size - 6) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tempCell.setCellValue(all.get(i) + "单价"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tempCell.setCellValue(all.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tempCell.setCellStyle(cellStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tempCell.setCellStyle(cellTitleStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置第三行标题栏字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setFont(cellTitleStyle,wb,"宋体",11,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 根据客户名称,发货方查询清单数据 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,10 +269,11 @@ public class TWarehousebillsfeesServiceImpl implements ITWarehousebillsfeesServi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 HSSFCell temCell = tempRow.createCell(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 String cellValue = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (i == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 序号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellValue = StringUtils.objToStr(index++); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (i == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 业务类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cellValue = StringUtils.objToStr(bd.getfBusinesstype()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cellValue = StringUtils.objToStr(bd.getfBilltype()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (i == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 作业类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellValue = StringUtils.objToStr(bd.getTwlfBusinesstype()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,13 +318,14 @@ public class TWarehousebillsfeesServiceImpl implements ITWarehousebillsfeesServi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellValue = StringUtils.objToStr(bd.getfStlamountdate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (i == size - 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 仓库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cellValue = StringUtils.objToStr(bd.getfWarehouseId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cellValue = StringUtils.objToStr(bd.getFhName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (i == size - 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 备注 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cellValue = StringUtils.objToStr(bd.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 temCell.setCellValue(cellValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                temCell.setCellStyle(cellStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                temCell.setCellStyle(cellContentStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                setFont(cellContentStyle,wb,"宋体",12,false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -340,23 +358,90 @@ public class TWarehousebillsfeesServiceImpl implements ITWarehousebillsfeesServi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return downloadPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 获取 excel 表格的 cell 相关样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public HSSFCellStyle getCellStyle(HSSFWorkbook wb) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HSSFCellStyle cellStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 水平居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 垂直居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 上边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 下边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 左边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 右边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        cellStyle.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 封装大标题实现复用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param title 标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param row 所在行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param sheet sheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param cellStyle 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param cellAddresses 合并行参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setBigTitle(String title,int row,HSSFSheet sheet,HSSFCellStyle cellStyle,CellRangeAddress cellAddresses){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 合并参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheet.addMergedRegion(cellAddresses); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 大标题部分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFRow bigTitleRow = sheet.createRow(row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCell cell = bigTitleRow.createCell(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cell.setCellValue(title); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cell.setCellStyle(cellStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 设置 excel 内内容字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param style 传入的已设置的 excel 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param workbook 工作簿 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param fontName 字体名称,例如: "宋体" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param fontSize 字体大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param isBold 是否加粗,true:加粗,false:不加粗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setFont(HSSFCellStyle style,HSSFWorkbook workbook,String fontName,int fontSize,boolean isBold){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFFont font = workbook.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font.setFontName(fontName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 是否加粗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font.setBold(isBold); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 字体大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font.setFontHeightInPoints((short) fontSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 需要设置在谁上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        style.setFont(font); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 获取并设置工作表 excel 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param workbook 工作簿 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param position 位置参数:left-居左,right-居右,center-居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param showFrame 是否显示边框,true:显示,false:不显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 已设置的 excel 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HSSFCellStyle getCellStyle(HSSFWorkbook workbook,String position,boolean showFrame){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建标题的显示样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle headerStyle = workbook.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置水平垂直居中+上下左右边框+边框是否显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setHeaderStyle(headerStyle,position,showFrame); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return cellStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return headerStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 封装边框以及水平+垂直居中+边框是否显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param headerStyle 样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param position 位置参数:left-居左,right-居右,center-居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param showFrame 是否显示边框,true:显示,false:不显示 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setHeaderStyle(HSSFCellStyle headerStyle,String position,boolean showFrame){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 水平位置摆放 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        switch (position) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "left": // 居左 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                headerStyle.setAlignment(HorizontalAlignment.LEFT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "right": // 居右 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                headerStyle.setAlignment(HorizontalAlignment.RIGHT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            case "center": // 居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                headerStyle.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 垂直居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (showFrame) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 上边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerStyle.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 下边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerStyle.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 左边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerStyle.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 右边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerStyle.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |