使用poi将excel转为html,如果需要表格可编辑,可以让你们前端给提供样式设置到代码里,码云代码库位置poiexample,欢迎来丰富它的功能
poi版本 4.1.2
pom依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
使用方法:
main方法调用测试:
public class Tmp {
public static void main(String[] args) throws Exception {
String arg1 = "C:\\Users\\test.xlsx";
StringBuilder stringBuilder = new StringBuilder();
// 打印实现Appendable 接口,可打印到stringbuilder、stringbuffer、BufferedWriter等
ExcelToHtml excelToHtml = ExcelToHtml.create(arg1, stringBuilder);
excelToHtml.setCompleteHTML(true);// 是否打印完整html
excelToHtml.printPage();// 打印
System.out.println(stringBuilder.toString());// 输出打印结果
}
}
下面几个工具文件:
ExcelToHtml.java 主要操作方法类
HtmlHelper.java 帮助类接口
HSSFHtmlHelper.java 97-2007版本excel实现帮助类
XSSFHtmlHelper.java 新版本excel实现帮助类
ExcelToHtml.java:
package com.demo.exceltohtml;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.format.CellFormat;
import org.apache.poi.ss.format.CellFormatResult;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.*;
public class ExcelToHtml {
private final Workbook wb;
private final Appendable output;
private boolean completeHTML;
private Formatter out;
private boolean gotBounds;
private int firstColumn;
private int endColumn;
private HtmlHelper helper;
private static final String DEFAULTS_CLASS = "excelDefaults";
private static final String COL_HEAD_CLASS = "colHeader";
private static final String ROW_HEAD_CLASS = "rowHeader";
private static final Map<HorizontalAlignment, String> HALIGN = mapFor(
HorizontalAlignment.LEFT, "left",
HorizontalAlignment.CENTER, "center",
HorizontalAlignment.RIGHT, "right",
HorizontalAlignment.FILL, "left",
HorizontalAlignment.JUSTIFY, "left",
HorizontalAlignment.CENTER_SELECTION, "center");
private static final Map<VerticalAlignment, String> VALIGN = mapFor(
VerticalAlignment.BOTTOM, "bottom",
VerticalAlignment.CENTER, "middle",
VerticalAlignment.TOP, "top");
private static final Map<BorderStyle, String> BORDER = mapFor(
BorderStyle.DASH_DOT, "dashed 1pt",
BorderStyle.DASH_DOT_DOT, "dashed 1pt",
BorderStyle.DASHED, "dashed 1pt",
BorderStyle.DOTTED, "dotted 1pt",
BorderStyle.DOUBLE, "double 3pt",
BorderStyle.HAIR, "solid 1px",
BorderStyle.MEDIUM, "solid 2pt",
BorderStyle.MEDIUM_DASH_DOT, "dashed 2pt",
BorderStyle.MEDIUM_DASH_DOT_DOT, "dashed 2pt",
BorderStyle.MEDIUM_DASHED, "dashed 2pt",
BorderStyle.NONE, "none",
BorderStyle.SLANTED_DASH_DOT, "dashed 2pt",
BorderStyle.THICK, "solid 3pt",
BorderStyle.THIN, "dashed 1pt");
private static final int IDX_TABLE_WIDTH = -2;
private static final int IDX_HEADER_COL_WIDTH = -1;
@SuppressWarnings({"unchecked"})
private static <K, V> Map<K, V> mapFor(Object... mapping) {
Map<K, V> map = new HashMap<>();
for (int i = 0; i < mapping.length; i += 2) {
map.put((K) mapping[i], (V) mapping[i + 1]);
}
return map;
}
public static ExcelToHtml create(Workbook wb, Appendable output) {
return new ExcelToHtml(wb, output);
}
public static ExcelToHtml create(String path, Appendable outpu