Selaa lähdekoodia

修复了超过26列以及字体的小bug

4.1.3.A
jueyue 9 vuotta sitten
vanhempi
commit
05d6cf60a8
4 muutettua tiedostoa jossa 44 lisäystä ja 23 poistoa
  1. +13
    -4
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java
  2. +21
    -11
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java
  3. +1
    -1
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java
  4. +9
    -7
      easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java

+ 13
- 4
easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/ExcelToHtmlServer.java Näytä tiedosto

@@ -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 = "&nbsp;";


+ 21
- 11
easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/MergedRegionHelper.java Näytä tiedosto

@@ -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);
}
}

+ 1
- 1
easypoi-base/src/main/java/org/jeecgframework/poi/excel/html/helper/StylerHelper.java Näytä tiedosto

@@ -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);


+ 9
- 7
easypoi-test/src/main/java/org/jeecgframework/poi/excel/ExcelToHtmlUtilTest.java Näytä tiedosto

@@ -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(


Ladataan…
Peruuta
Tallenna