| @@ -83,20 +83,29 @@ public class ExcelToHtmlServer { | |||
| } | |||
| private void printSheet(Sheet sheet) { | |||
| out.format("<table style='word-break:break-all' class=%s>%n", DEFAULTS_CLASS); | |||
| out.format("<table class='%s' width='%s'>%n", DEFAULTS_CLASS, getTableWidth(sheet)); | |||
| printCols(sheet); | |||
| printSheetContent(sheet); | |||
| out.format("</table>%n"); | |||
| } | |||
| private void printCols(Sheet sheet) { | |||
| out.format("<col/>%n"); | |||
| //out.format("<col/>%n"); | |||
| ensureColumnBounds(sheet); | |||
| for (int i = firstColumn; i < endColumn; i++) { | |||
| out.format("<col style='width:%spx;' />%n", sheet.getColumnWidth(i) / 32); | |||
| } | |||
| } | |||
| private int getTableWidth(Sheet sheet) { | |||
| ensureColumnBounds(sheet); | |||
| int width = 0; | |||
| for (int i = firstColumn; i < endColumn; i++) { | |||
| width = width + (sheet.getColumnWidth(i) / 32); | |||
| } | |||
| return width; | |||
| } | |||
| private void ensureColumnBounds(Sheet sheet) { | |||
| if (gotBounds) | |||
| return; | |||
| @@ -134,7 +143,7 @@ public class ExcelToHtmlServer { | |||
| } | |||
| private void printSheetContent(Sheet sheet) { | |||
| printColumnHeads(sheet); | |||
| //printColumnHeads(sheet); | |||
| MergedRegionHelper mergedRegionHelper = new MergedRegionHelper(sheet); | |||
| CellValueHelper cellValueHelper = new CellValueHelper(wb, cssRandom); | |||
| out.format("<tbody>%n"); | |||
| @@ -143,7 +152,7 @@ public class ExcelToHtmlServer { | |||
| while (rows.hasNext()) { | |||
| Row row = rows.next(); | |||
| out.format(" <tr style='height:%spx;'>%n", row.getHeight() / 15); | |||
| out.format(" <td class='%s'>%d</td>%n", ROW_HEAD_CLASS, row.getRowNum() + 1); | |||
| //out.format(" <td class='%s'>%d</td>%n", ROW_HEAD_CLASS, row.getRowNum() + 1); | |||
| for (int i = firstColumn; i < endColumn; i++) { | |||
| if (mergedRegionHelper.isNeedCreate(rowIndex, i)) { | |||
| String content = " "; | |||
| @@ -28,25 +28,34 @@ public class MergedRegionHelper { | |||
| handerMergedString(sheet.getMergedRegion(i).formatAsString()); | |||
| } | |||
| } | |||
| /** | |||
| * 根据合并输出内容,处理合并单元格事情 | |||
| * @param formatAsString | |||
| */ | |||
| private void handerMergedString(String formatAsString) { | |||
| String[] strArr = formatAsString.split(":"); | |||
| int startCol = strArr[0].charAt(0) - 65; | |||
| int startRol = Integer.valueOf(strArr[0].substring(1)); | |||
| int endCol = strArr[1].charAt(0) - 65; | |||
| int endRol = Integer.valueOf(strArr[1].substring(1)); | |||
| mergedCache.put(startRol + "_" + startCol, new Integer[] { endRol - startRol + 1, | |||
| endCol - startCol + 1 }); | |||
| for (int i = startRol; i <= endRol; i++) { | |||
| for (int j = startCol; j <= endCol; j++) { | |||
| notNeedCread.add(i + "_" + j); | |||
| if (strArr.length == 2) { | |||
| int startCol = strArr[0].charAt(0) - 65; | |||
| if (strArr[0].charAt(1) >= 65) { | |||
| startCol = (startCol + 1) * 26 + (strArr[0].charAt(1) - 65); | |||
| } | |||
| int startRol = Integer.valueOf(strArr[0].substring(strArr[0].charAt(1) >= 65 ? 2 : 1)); | |||
| int endCol = strArr[1].charAt(0) - 65; | |||
| if (strArr[1].charAt(1) >= 65) { | |||
| endCol = (endCol + 1) * 26 + (strArr[1].charAt(1) - 65); | |||
| } | |||
| int endRol = Integer.valueOf(strArr[1].substring(strArr[1].charAt(1) >= 65 ? 2 : 1)); | |||
| mergedCache.put(startRol + "_" + startCol, new Integer[] { endRol - startRol + 1, | |||
| endCol - startCol + 1 }); | |||
| for (int i = startRol; i <= endRol; i++) { | |||
| for (int j = startCol; j <= endCol; j++) { | |||
| notNeedCread.add(i + "_" + j); | |||
| } | |||
| } | |||
| notNeedCread.remove(startRol + "_" + startCol); | |||
| } | |||
| notNeedCread.remove(startRol + "_" + startCol); | |||
| } | |||
| /** | |||
| @@ -78,4 +87,5 @@ public class MergedRegionHelper { | |||
| public Integer[] getRowAndColSpan(int row, int col) { | |||
| return mergedCache.get(row + "_" + col); | |||
| } | |||
| } | |||
| @@ -93,7 +93,7 @@ public class StylerHelper { | |||
| } | |||
| private void prontFonts(Workbook wb) { | |||
| for (short i = 0, le = wb.getNumberOfFonts(); i < le; i++) { | |||
| for (short i = 0, le = wb.getNumberOfFonts(); i <= le; i++) { | |||
| Font font = wb.getFontAt(i); | |||
| out.format(".%s .%s {%n", DEFAULTS_CLASS, "font_" + i + "_" + cssRandom); | |||
| fontStyle(font); | |||
| @@ -15,7 +15,7 @@ import org.junit.Test; | |||
| public class ExcelToHtmlUtilTest { | |||
| @Test | |||
| //@Test | |||
| public void testToTableHtmlWorkbook() { | |||
| try { | |||
| Workbook wb = new HSSFWorkbook(new FileInputStream( | |||
| @@ -33,7 +33,7 @@ public class ExcelToHtmlUtilTest { | |||
| } | |||
| } | |||
| @Test | |||
| //@Test | |||
| public void testToTableHtmlWorkbookInt() { | |||
| try { | |||
| Workbook wb = new HSSFWorkbook(new FileInputStream(new File( | |||
| @@ -55,10 +55,12 @@ public class ExcelToHtmlUtilTest { | |||
| try { | |||
| Workbook wb = new HSSFWorkbook(new FileInputStream( | |||
| new File( | |||
| PoiPublicUtil | |||
| .getWebRootPath("org/jeecgframework/poi/test/excel/doc/专项支出用款申请书.xls")))); | |||
| String html = ExcelToHtmlUtil.toAllHtml(wb); | |||
| new File("d:/tt.xls"))); | |||
| // Workbook wb = new HSSFWorkbook(new FileInputStream( | |||
| // new File( | |||
| // PoiPublicUtil | |||
| // .getWebRootPath("org/jeecgframework/poi/test/excel/doc/专项支出用款申请书.xls")))); | |||
| String html = ExcelToHtmlUtil.toTableHtml(wb); | |||
| FileWriter fw = new FileWriter("d:/专项支出用款申请书_all.html"); | |||
| fw.write(html); | |||
| fw.close(); | |||
| @@ -69,7 +71,7 @@ public class ExcelToHtmlUtilTest { | |||
| } | |||
| } | |||
| @Test | |||
| //@Test | |||
| public void testToAllHtmlWorkbookInt() { | |||
| try { | |||
| Workbook wb = new HSSFWorkbook(new FileInputStream(new File( | |||