Java Apache POI Excel保存为PDF

如何将excel文件转换/保存为pdf ? 我正在使用java play framework来生成一些excel文件,现在需求更改为pdf 。 我不想重新编码一切。

有没有办法转换为pdf

我生成的excel文件来自一个模板; 我读了Excel模板文件,写入更改,并保存为新的Excel文件。 这样,模板不变。 它包含边框,图像和其他格式。

您需要以下Java库和关联的JAR文件才能使程序正常工作。 POI v3.8 iText v5.3.4

试试这个例子将XLS转换成PDF

接受Excel电子表格数据作为input并将其转换为PDF表格数据的完整Java代码如下所示:

  import java.io.FileInputStream; import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.ss.usermodel.*; import java.util.Iterator; import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; public class excel2pdf { public static void main(String[] args) throws Exception{ FileInputStream input_document = new FileInputStream(new File("C:\\excel_to_pdf.xls")); // Read workbook into HSSFWorkbook HSSFWorkbook my_xls_workbook = new HSSFWorkbook(input_document); // Read worksheet into HSSFSheet HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(0); // To iterate over the rows Iterator<Row> rowIterator = my_worksheet.iterator(); //We will create output PDF document objects at this point Document iText_xls_2_pdf = new Document(); PdfWriter.getInstance(iText_xls_2_pdf, new FileOutputStream("Excel2PDF_Output.pdf")); iText_xls_2_pdf.open(); //we have two columns in the Excel sheet, so we create a PDF table with two columns //Note: There are ways to make this dynamic in nature, if you want to. PdfPTable my_table = new PdfPTable(2); //We will use the object below to dynamically add new data to the table PdfPCell table_cell; //Loop through rows. while(rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { Cell cell = cellIterator.next(); //Fetch CELL switch(cell.getCellType()) { //Identify CELL type //you need to add more code here based on //your requirement / transformations case Cell.CELL_TYPE_STRING: //Push the data from Excel to PDF Cell table_cell=new PdfPCell(new Phrase(cell.getStringCellValue())); //feel free to move the code below to suit to your needs my_table.addCell(table_cell); break; } //next line } } //Finally add the table to PDF document iText_xls_2_pdf.add(my_table); iText_xls_2_pdf.close(); //we created our pdf file.. input_document.close(); //close xls } } 

我希望这能帮到您