2017-10-31 11 views
-1

私はExcelを持っており、pdfに変換したいのですが。私はすでにiTextを使用していますが、それは効率的ではありません。なぜなら、多くのExcelテンプレートがあり、iTextではIteratorを使用してPDFを作成しています。つまり、Excelを変更するたびにコードを変更する必要があります。 pdfに変換する他の方法はありますか?どんな図書館?Convert excel to pdf java

はあなたがここにApache POIのAPI を使用することができますあなたの

答えて

1

ありがとうござい例です。

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

あなたは私の質問を読んでなかったです?この例はすべてのExcelで機能しません。私のテーブルは変形されています –

+0

あなたはExcelのダンプを追加できます –

+0

いいえ、私はそれを追加することはできません。しかし、テキストに2つのセルがある場合、イテレータが2つのセルを追加すると言うことができます(1つはテキストともう1つは空です) –