赞
踩
前言
Java是一种广泛使用的编程语言,它在企业级应用开发中发挥着重要作用。而在实际的开发过程中,我们常常需要处理各种数据格式转换的需求。今天小编为大家介绍下如何使用葡萄城公司的的Java API 组件GrapeCity Documents for Excel(以下简称为GcExcel)将Excel XLSX文件转换为PDF。
在 Java 中将 Excel 电子表格转换为 PDF 的步骤
当在 Mac 或者 Linux 使用 GcExcel 时,需要提前将导出 PDF 使用到的字体,放入 workbook.FontFolderPath 所指向的路径中。 |
---|
步骤一:用 Excel API 创建 Excel 电子表格
您可以参考如下代码创建一个 Excel 电子表格。
public void CreateExcel() { //初始化工作簿 Workbook wb = new Workbook(); IWorksheet sheet = wb.getWorksheets().get(0); //设置数据 sheet.getRange("B3:C7").setValue(new Object[][]{ {"项目", "金额"}, {"收入 1", 2500}, {"收入 2", 1000}, {"收入 3", 250}, {"其他", 250}, }); sheet.getRange("B10:C23").setValue(new Object[][]{ {"项目", "金额"}, {"借款", 800}, {"电费", 120}, {"天然气", 50}, {"话费", 45}, {"生活用品", 500}, {"车贷", 273}, {"汽车费用", 120}, {"助学贷款", 50}, {"信用卡", 100}, {"车险", 78}, {"个人医保", 50}, {"娱乐", 100}, {"杂项", 50}, }); sheet.getRange("B2:C2").merge(); sheet.getRange("B2").setValue("月收入"); sheet.getRange("B2").setValue("月收入"); sheet.getRange("B9:C9").merge(); sheet.getRange("B9").setValue("月花销"); sheet.getRange("E2:G2").merge(); sheet.getRange("E2").setValue("收支百分比"); sheet.getRange("E5:G5").merge(); sheet.getRange("E5").setValue("概要"); sheet.getRange("E3:F3").merge(); sheet.getRange("E9").setValue("平衡"); sheet.getRange("E6").setValue("总计月收入"); sheet.getRange("E6:F6").merge(); sheet.getRange("E7").setValue("总计月开销"); sheet.getRange("E7:F7").merge(); // 设置行高列宽 sheet.setStandardHeight(26.25); sheet.setStandardWidth(8.43); sheet.getRange("2:24").setRowHeight(27); sheet.getRange("A:A").setColumnWidth(2.855); sheet.getRange("B:B").setColumnWidth(33.285); sheet.getRange("C:C").setColumnWidth(25.57); sheet.getRange("D:D").setColumnWidth(1); sheet.getRange("E:E").setColumnWidth(25.57); sheet.getRange("F:F").setColumnWidth(14.285); sheet.getRange("G:G").setColumnWidth(11); //添加表格 ITable incomeTable = sheet.getTables().add(sheet.getRange("B3:C7"), true); incomeTable.setName("tb1Income"); incomeTable.setTableStyle(wb.getTableStyles().get("TableStyleMedium4")); ITable expensesTable = sheet.getTables().add(sheet.getRange("B10:C23"), true); expensesTable.setName("tb1Expenses"); expensesTable.setTableStyle(wb.getTableStyles().get("TableStyleMedium4")); //添加公式 sheet.getNames().add("TotalMonthlyIncome", "=SUM(tb1Income[金额])"); sheet.getNames().add("TotalMonthlyExpenses", "=SUM(tb1Expenses[金额])"); sheet.getRange("E3").setFormula("=TotalMonthlyExpenses"); sheet.getRange("G3").setFormula("=TotalMonthlyExpenses/TotalMonthlyIncome"); sheet.getRange("G3").setStyle(wb.getStyles().get("Percent")); sheet.getRange("G6").setFormula("=TotalMonthlyIncome"); sheet.getRange("G7").setFormula("=TotalMonthlyExpenses"); sheet.getRange("G9").setFormula("=TotalMonthlyIncome-TotalMonthlyExpenses"); //添加条件格式 IDataBar dataBar = sheet.getRange("E3").getFormatConditions().addDatabar(); dataBar.getMinPoint().setType(ConditionValueTypes.Number); dataBar.getMinPoint().setValue(1); dataBar.getMaxPoint().setType(ConditionValueTypes.Number); dataBar.getMaxPoint().setValue("=TotalMonthlyIncome"); dataBar.setBarFillType(DataBarFillType.Gradient); dataBar.getBarColor().setColor(Color.GetRed()); dataBar.setShowValue(false); //添加图表 IShape shape = sheet.getShapes().addChart(ChartType.ColumnClustered, 370, 250, 250, 200); shape.getChart().getSeriesCollection().add(sheet.getRange("E6:G7"), RowCol.Columns); shape.getChart().getChartTitle().setText("收支图"); shape.getChart().getSeriesCollection().get(0).delete(); //添加样式 IStyle currencyStyle = wb.getStyles().get("Currency"); currencyStyle.setIncludeAlignment(true); currencyStyle.setHorizontalAlignment(HorizontalAlignment.Left); currencyStyle.setVerticalAlignment(VerticalAlignment.Bottom); currencyStyle.setNumberFormat("$#,##0.00"); IStyle heading1Style = wb.getStyles().get("Heading 1"); heading1Style.setIncludeAlignment(true); heading1Style.setHorizontalAlignment(HorizontalAlignment.Center); heading1Style.setVerticalAlignment(VerticalAlignment.Center); heading1Style.getFont().setName("SimSun"); heading1Style.getFont().setBold(true); heading1Style.getFont().setSize(11); heading1Style.getFont().setColor(Color.GetWhite()); heading1Style.setIncludeBorder(false); heading1Style.setIncludePatterns(true); heading1Style.getInterior().setColor(Color.FromArgb(51, 0, 102)); sheet.getSheetView().setDisplayGridlines(false); sheet.getRange("B2, B9, E2, E5, E9:G9").setStyle(heading1Style); sheet.getRange("C4:C7, C11:C23, G6:G7, G9").setStyle(currencyStyle); sheet.getRange("E6:G6, E7:G7").setStyle(wb.getStyles().get("Total")); //保存电子表格 wb.save("output/spreadSheet.xlsx"); }
执行完代码后,您将得到如下图一样的 Excel 电子表格。
步骤二:通过保存方法把电子表格保存成 PDF 格式
在步骤一中,我们使用 GcExcel 工作簿创建了一份 Excel 电子表格,并且把它保存成为 Excel 文件。同时,您也可以直接将工作簿保存成为 PDF 文件,而不保存为 Excel 文件。
wb.save("output/simpleBudget.pdf");
导出后,效果如下,PDF 会包含两页。
请注意,如果您想把整个工作表打印在一页,您可以通过工作表上的 PageSetup 类设置额外的选项。
sheet.getPageSetup().setOrientation(PageOrientation.Landscape);
sheet.getPageSetup().setIsPercentScale(false);
sheet.getPageSetup().setFitToPagesWide(1);
sheet.getPageSetup().setFitToPagesTall(1);
wb.save("output/simpleBudget.pdf");
导出的 PDF 看起来如下:
步骤三:加载已有的 Excel 电子表格并且转换为 PDF
如果您希望把已有的 Excel 文件(Excel,GcExcel 或者 其他第三方工具创建的 Excel 文件)转换为 PDF 文件,您只需要跟随第三步使用 GcExcel 即可满足需求。
假设您想把一个销售发票跟踪表转换成 PDF。
请按如下步骤转换:
Workbook wb = new com.grapecity.documents.excel.Workbook();
wb.open("resources/销售发票跟踪表.xlsx");
for(IWorksheet sheet : wb.getWorksheets()){
sheet.getPageSetup().setOrientation(PageOrientation.Landscape);
sheet.getPageSetup().setIsPercentScale(false);
sheet.getPageSetup().setFitToPagesWide(1);
sheet.getPageSetup().setFitToPagesTall(1);
}
wb.save("output/销售发票跟踪表.pdf");
导出的 PDF 文件如下图:
总结
以上就是使用Java将Excel XLSX转换为PDF的全过程,如果您想要了解更多详细信息,可以参考这篇帮助文档。
扩展链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。