2014-09-26 17 views
7

Jak mogę przekonwertować plik excel na pdf? Używam java play framework do generowania plików excel, a teraz wymagana jest zmiana na pdf. Nie chcę recode wszystko.Java Apache POI Excel zapisz jako PDF

Czy istnieje sposób konwersji na pdf?

Generowane przeze mnie pliki excel pochodzą z szablonu; Czytam plik szablonu Excel, zapisuję zmiany i zapisuję jako nowy plik Excela. W ten sposób szablon pozostaje niezmieniony. Zawiera obramowanie, obraz i inne formatowanie.

Odpowiedz

9

Potrzebne będą następujące biblioteki Java i powiązane pliki JAR, aby program działał. POI v3.8 iText v5.3.4

Spróbuj przykład konwersji XLS PDF

Kompletny kod Java przyjmuje dane z arkusza kalkulacyjnego Excel jako wejście i przekształca ją do a tabeli danych PDF jest poniżej:

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

mam nadzieję, że to pomoże Ci

Powiązane problemy