2017-10-31 4 views
-1

Ich habe eine Excel und ich möchte es in PDF konvertieren. Ich benutze bereits iText, aber es ist nicht effizient, weil ich viele Excel-Vorlagen habe und mit iText verwende ich Iterator, um PDF zu erstellen, was bedeutet, dass ich meinen Code jedes Mal ändern muss, wenn ich mein Excel ändere. Gibt es eine andere Möglichkeit, Excel in PDF zu konvertieren? Irgendeine Bibliothek?Konvertieren Excel zu PDF Java

Danke

Antwort

1

Sie den Apache POI API hier ein Beispiel verwenden:

public class excel2pdf { 
      public static void main(String[] args) throws Exception{ 
        //First we read the Excel file in binary format into FileInputStream 
        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(); 
        //Suppose 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 
      } 
    } 
+0

hast du meine Frage gelesen ?? Dieses Beispiel funktioniert nicht für jedes Excel. Meine Tabelle ist deformiert –

+0

Können Sie Ihre Excel-Dump –

+0

hinzufügen Nein, ich kann es nicht hinzufügen. Aber ich kann sagen, dass, wenn auf Excel ein Text 2 Zellen hat der Iterator mir 2 Zellen (1 mit dem Text und eine andere leere –

Verwandte Themen