Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ConvertHtml2Excel.java =================================================================== diff -u -r31289 -r31291 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ConvertHtml2Excel.java (.../ConvertHtml2Excel.java) (revision 31289) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ConvertHtml2Excel.java (.../ConvertHtml2Excel.java) (revision 31291) @@ -24,12 +24,13 @@ /** * html表格转excel 调用之后需调用mergedTbaleHeader方法 - * @param rowIndex row开始下标 + * @param titleRowIndex 标题row开始下标 + * @param rowIndex 内容row开始下标 * @param HSSFWorkbook 一个webbook,对应一个Excel文件 用于在已有的文件中添加表格 * @param tableHtml ....
* @return */ - public static HSSFWorkbook table2Excel(int rowIndex, HSSFWorkbook wb, HSSFSheet sheet,String tableHtml, List crossRowEleMetaLs) { + public static HSSFWorkbook table2Excel(int titleRowIndex, int rowIndex, HSSFWorkbook wb, HSSFSheet sheet,String tableHtml,String titleName, List crossRowEleMetaLs) { if(wb == null){ wb = new HSSFWorkbook(); } @@ -42,13 +43,13 @@ Document data = DocumentHelper.parseText(tableHtml); // 生成表头 Element thead = data.getRootElement().element("thead"); - HSSFCellStyle titleStyle = getHeaderStyle(wb); + HSSFCellStyle headerStyle = getHeaderStyle(wb); if (thead != null) { List trLs = thead.elements("tr"); for (Element trEle : trLs) { HSSFRow row = sheet.createRow(rowIndex); List thLs = trEle.elements("th"); - makeRowCell(thLs, rowIndex, row, 0, titleStyle, crossRowEleMetaLs); + makeRowCell(thLs, rowIndex, row, 0, headerStyle, crossRowEleMetaLs); row.setHeightInPoints(17); rowIndex++; } @@ -83,6 +84,21 @@ rowIndex++; } } + //获取列数 生成标题 + int coloumNum = sheet.getRow(rowIndex - 1).getPhysicalNumberOfCells(); + String titlHtmls = "

"+ titleName +"

"; + Document titlData = DocumentHelper.parseText(titlHtmls); + List trLs = titlData.getRootElement().elements("p"); + HSSFCellStyle titleStyle = ConvertHtml2Excel.getTitleStyle(wb); + if (trLs != null && trLs.size() > 0) { + HSSFRow row = sheet.createRow(titleRowIndex); + ConvertHtml2Excel.makeRowCell(trLs, titleRowIndex, row, 0, titleStyle, crossRowEleMetaLs); + row.setHeightInPoints(16); + titleRowIndex++; + } + for (CrossRangeCellMeta crcm : crossRowEleMetaLs) { + sheet.addMergedRegion(new CellRangeAddress(crcm.getFirstRow(), crcm.getLastRow(), crcm.getFirstCol(), crcm.getLastCol())); + } } catch (DocumentException e) { e.printStackTrace(); } @@ -93,31 +109,6 @@ return wb; } /** - * 生成标题 - * @param startRowNum 标题开始行数 - * @param wb HSSFWorkbook - * @param sheet HSSFSheet - * @param titlHtmls 标题 支持多个 - * @param crossRowEleMetaLs 跨行跨列 - */ - public static void createTitle(int startRowNum, HSSFWorkbook wb, HSSFSheet sheet, String titlHtmls, List crossRowEleMetaLs){ - Document data = null; - try { - data = DocumentHelper.parseText(titlHtmls); - List trLs = data.getRootElement().elements("p"); - HSSFCellStyle titleStyle = ConvertHtml2Excel.getTitleStyle(wb); - if (trLs != null && trLs.size() > 0) { - HSSFRow row = sheet.createRow(startRowNum); - ConvertHtml2Excel.makeRowCell(trLs, startRowNum, row, 0, titleStyle, crossRowEleMetaLs); - row.setHeightInPoints(16); - startRowNum++; - } - } catch (DocumentException e) { - e.printStackTrace(); - } - - } - /** * 生产行内容 * @param tdLs th或者td集合 * @param rowIndex 行号 @@ -281,13 +272,4 @@ style.setFont(font); return style; } - /** - * 合并表头 - * @param crossRowEleMetaLs - */ - protected static void mergedTbaleHeader(HSSFSheet sheet, List crossRowEleMetaLs){ - for (CrossRangeCellMeta crcm : crossRowEleMetaLs) { - sheet.addMergedRegion(new CellRangeAddress(crcm.getFirstRow(), crcm.getLastRow(), crcm.getFirstCol(), crcm.getLastCol())); - } - } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java =================================================================== diff -u -r31286 -r31291 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java (.../ReportFormsManagerImpl.java) (revision 31286) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportFormsManagerImpl.java (.../ReportFormsManagerImpl.java) (revision 31291) @@ -522,14 +522,8 @@ htmlTable = new String(decoder.decodeBuffer(htmlTable)); htmlTable = java.net.URLDecoder.decode(htmlTable,"UTF-8"); List crossRowEleMetaLs = new ArrayList(); - //先生成表体,再获取标体列数,设置标题 - ConvertHtml2Excel.table2Excel(row2 + 2, wb, sheet, htmlTable, crossRowEleMetaLs); - //获取列数 生成标题 - int coloumNum=sheet.getRow(row2 + 3).getPhysicalNumberOfCells(); - String titlHtmls = "

"+ fileName.substring(0, fileName.indexOf(".xls")) +"

"; - ConvertHtml2Excel.createTitle(0, wb, sheet, titlHtmls, crossRowEleMetaLs); - //合并表头 - ConvertHtml2Excel.mergedTbaleHeader(sheet, crossRowEleMetaLs); + //生成表格 + ConvertHtml2Excel.table2Excel(0, row2 + 2, wb, sheet, htmlTable,fileName.substring(0, fileName.indexOf(".xls")), crossRowEleMetaLs); out = response.getOutputStream(); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1" ));