2014-09-26 5 views
7

Wie kann ich excel Datei in pdf konvertieren/speichern? Ich verwende java play framework, um einige excel Dateien zu generieren, und jetzt ändert sich die Anforderung zu pdf. Ich möchte nicht alles neu kodieren.Java Apache POI Excel als PDF speichern

Gibt es eine Möglichkeit zur Konvertierung in pdf?

Die excel Dateien, die ich erzeuge, stammen aus einer Vorlage; Ich habe die Excel-Vorlagendatei gelesen, Änderungen geschrieben und als neue Excel-Datei gespeichert. Auf diese Weise ist die Vorlage unverändert. Es enthält Rand-, Bild- und andere Formatierungen.

Antwort

9

Sie benötigen die folgenden Java-Bibliotheken und die zugehörigen JAR-Dateien, damit das Programm funktioniert. POI v3.8 iText v5.3.4

dieses Beispiel XLS zu PDF konvertieren

Der komplette Java-Code, der Excel-Tabelle Daten als Eingabe akzeptiert und transformiert, die zu einem Daten PDF-Tabelle zur Verfügung gestellt unten:

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 
      } 
    } 

hoffe, dass ich dies Ihnen

helfen