用Java将Excel转换为PDF

时间:2018-07-12 05:02:43

标签: java

我正在尝试使用Java打印报告页面。这里有一个具有打印格式的excel文件,我必须将数据填充为excel,然后将其转换为pdf以便显示。

Excel数据已成功编辑并保存到新文件。但是当我尝试将编辑后的文件转换为PDF时,它丢失了格式,列距和对齐方式均不受影响。

这是我的代码:

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"));
        HSSFWorkbook my_xls_workbook = new HSSFWorkbook(input_document);
        HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(0); 
        Iterator<Row> rowIterator = my_worksheet.iterator();
        Document iText_xls_2_pdf = new Document();
        PdfWriter.getInstance(iText_xls_2_pdf, new 
        FileOutputStream("Excel2PDF_Output.pdf"));
        iText_xls_2_pdf.open();
        PdfPTable my_table = new PdfPTable(2);
        PdfPCell table_cell;
        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
                case Cell.CELL_TYPE_STRING:
                    table_cell=new PdfPCell(new Phrase(cell.getStringCellValue()));
                    my_table.addCell(table_cell);
                    break;
                }
            }
        }
        iText_xls_2_pdf.add(my_table);                       
        iText_xls_2_pdf.close();                
        input_document.close(); 
    }
}

1 个答案:

答案 0 :(得分:1)

如果要保留表格样式,我认为您应该在单元格中设置与样式相关的内容,例如colspan,border,alignment等。

这里是一个示例代码,用于为单元格设置一些样式属性,例如,如果您不希望使用边框,则应将边框设置为NO_BORDER,我不知道您的表是什么样子,因此您应该自己设置样式属性。

您还可以选中iText5 tables and fonts example pageiText7 tables and fonts example page以获取更多信息。

PdfPTable table = new PdfPTable(10);
PdfPCell cell = new PdfPCell(docTitle);
cell.setColspan(3);
cell.setBorder(PdfPCell.NO_BORDER);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
table.addCell(cell);
相关问题