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 = "";
+ 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" ));