From 05d6cf60a8062d8ae689da79c032051400ef1481 Mon Sep 17 00:00:00 2001 From: jueyue Date: Mon, 11 May 2015 23:34:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=B6=85=E8=BF=8726?= =?UTF-8?q?=E5=88=97=E4=BB=A5=E5=8F=8A=E5=AD=97=E4=BD=93=E7=9A=84=E5=B0=8F?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/excel/html/ExcelToHtmlServer.java | 17 +++++++--- .../excel/html/helper/MergedRegionHelper.java | 32 ++++++++++++------- .../poi/excel/html/helper/StylerHelper.java | 2 +- .../poi/excel/ExcelToHtmlUtilTest.java | 16 ++++++---- 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java index 76fb4fc..405a4ff 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java @@ -83,20 +83,29 @@ public class ExcelToHtmlServer { } private void printSheet(Sheet sheet) { - out.format("%n", DEFAULTS_CLASS); + out.format("
%n", DEFAULTS_CLASS, getTableWidth(sheet)); printCols(sheet); printSheetContent(sheet); out.format("
%n"); } private void printCols(Sheet sheet) { - out.format("%n"); + //out.format("%n"); ensureColumnBounds(sheet); for (int i = firstColumn; i < endColumn; i++) { out.format("%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("%n"); @@ -143,7 +152,7 @@ public class ExcelToHtmlServer { while (rows.hasNext()) { Row row = rows.next(); out.format(" %n", row.getHeight() / 15); - out.format(" %d%n", ROW_HEAD_CLASS, row.getRowNum() + 1); + //out.format(" %d%n", ROW_HEAD_CLASS, row.getRowNum() + 1); for (int i = firstColumn; i < endColumn; i++) { if (mergedRegionHelper.isNeedCreate(rowIndex, i)) { String content = " "; diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java index f2095b3..48ba70a 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java @@ -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); } + } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java index e2b688f..d52d6b5 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java @@ -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); diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java index ae2d48e..c5043d7 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java @@ -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(