目前的模板渲染还非常有限,稍微复杂一些的就无法支持,而且用起来很蹩脚,建议增加支持HTML转Excel。
0qx6xfy61#
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.parser.Tag; import org.jsoup.select.Elements; import java.io.FileOutputStream; import java.io.IOException; public class HtmlToExcelConverter { public static void main(String[] args) { // HTML内容 String htmlContent = "<table>" + "<tr><td>Hello</td><td>World</td></tr>" + "<tr><td colspan=\"2\">This is a merged cell</td></tr>" + "</table>"; // 创建一个工作簿 Workbook workbook = new XSSFWorkbook(); // 创建一个工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 使用Jsoup解析HTML内容 Document doc = Jsoup.parse(htmlContent); Elements tables = doc.select("table"); for (Element table : tables) { // 获取表格中的行 Elements rows = table.select("tr"); int rowNum = 0; for (Element row : rows) { // 创建Excel行 Row excelRow = sheet.createRow(rowNum++); // 获取行中的单元格 Elements cols = row.select("td"); int colNum = 0; for (Element col : cols) { // 创建Excel单元格 Cell excelCell = excelRow.createCell(colNum++); // 设置单元格类型为字符串 excelCell.setCellType(CellType.STRING); // 设置单元格内容 excelCell.setCellValue(col.text()); } } } // 将工作簿写入文件 try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) { workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } } }
1条答案
按热度按时间0qx6xfy61#