2014-09-26 26 views
7

Làm cách nào để chuyển đổi/lưu excel tệp vào pdf? Tôi đang sử dụng java play framework để tạo một số tệp excel và bây giờ yêu cầu thay đổi thành pdf. Tôi không muốn giải mã mọi thứ.Java Apache POI Excel lưu dưới dạng PDF

Có cách nào để chuyển đổi thành pdf không?

Các tệp excel tôi đang tạo là từ một mẫu; Tôi đọc tệp mẫu excel, ghi các thay đổi và lưu dưới dạng tệp excel mới. Bằng cách đó, mẫu không thay đổi. Nó chứa đường viền, hình ảnh và định dạng khác.

Trả lời

9

Bạn sẽ cần các thư viện Java sau và các tệp JAR được liên kết để chương trình hoạt động. POI v3.8 iText v5.3.4

Hãy thử ví dụ này để chuyển đổi XLS sang PDF

Mã Java hoàn toàn chấp nhận dữ liệu bảng tính Excel như một đầu vào và biến đổi đó để một bảng dữ liệu PDF được cung cấp bên dưới:

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

tôi hy vọng điều này sẽ giúp bạn

Các vấn đề liên quan