为什么有天生 Excel 的能力了,还须要天生 PDF?
可能得缘故原由:
永劫光存储 Excel 电子表格,但希望数据不会被修正在没有 MS Office 的环境中,也能打开并查看 Excel 文件打印或者分发 Excel 文件在不同的环境或运用中打开时,希望电子表格呈现的结果是同等的又或者,你可能须要创建和分发公司的报表,如:
GcExcel Java 是一个高性能的电子表格组件,它打包了所有必要的特性,以帮助用户以有效的办法处理繁芜的电子表格寻衅。该产品可以与 Java Web 运用程序和 Java 桌面运用程序一起利用,也可以支配在云平台上。

为在 Java 编程中利用而开拓的这个组件为开拓职员供应了一个全面的 API,许可他们快速创建、操作、转换和共享兼容 Microsoft excel 的电子表格,这些电子表格险些可以从任何运用程序、平台或 IDE 访问。它针对各种平台,包括企业 Web 运用程序、Linux、Unix 和 Windows。因此可以作为所有电子表格需求的一站式办理方案。
在 Java 中将 Excel 电子表格转换为 PDF 的步骤创建 Java Excel API 创建一个 Excel 电子表格利用保存方法将 Excel 电子表格转换为 PDF加载已有的 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。
请按如下步骤转换:
创建一个空的 WorkbookWorkbook wb = new com.grapecity.documents.excel.Workbook();
通过 Workbook 加载 Excel 文件
wb.open("resources/发卖发票跟踪表.xlsx");
通过事情表上的 PageSetup 类,设置页面选项。这样可以将全体事情表导出成为一个页面
for(IWorksheet sheet : wb.getWorksheets()){ sheet.getPageSetup().setOrientation(PageOrientation.Landscape); sheet.getPageSetup().setIsPercentScale(false); sheet.getPageSetup().setFitToPagesWide(1); sheet.getPageSetup().setFitToPagesTall(1);}
保存为 PDF
wb.save("output/发卖发票跟踪表.pdf");
导出的 PDF 文件如下图
GcExcel 中支持的导出 PDF 功能如下:
导出图表导出图形PDF 导出进度页面设置自定义分页文本跨列居中将 outline column 保存到 PDF打印单元格背景颜色的透明度将多个背景图片保存到 PDF 文档导出边框样式导出条件格式将图片保存到 PDF导出透视表将各种添补色保存到 PDF将表格背景图片保存到 PDF导出切片器将迷你图保存到 PDF导出表格将事情簿保存为 PDF将事情表保存为 PDF设置 PDF 文档的文档设置设置字体文件夹设置 PDF 文档的安全选项为换行笔墨进行缩小字体添补获取在 Java 中更多关于将 Excel 转换为 PDF 的信息,请访问葡萄城官网技能博客。