java - java中Excel到PDF的转换

标签 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(); 
    }
}

最佳答案

如果你想保留表格样式,我认为你应该在单元格中设置与样式相关的内容,例如 colspan、边框、对齐方式等。

这里是一个为单元格设置一些样式属性的示例代码,例如如果你想要没有边框,你应该将边框设置为 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);

关于java - java中Excel到PDF的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297612/

相关文章:

java - Eclipse Build Project 和 Maven Compile 命令的区别

Java EE Websocket

java - 在 IntelliJ 的 Kotlin > Java 转换后将源代码恢复为 Java

Java 名称 Swing 小程序

java - 通过 Google Spreadsheet API 添加标题

java - 使 TableRows 宽度均匀

java - 读取整数时出错

java - Android OnPreferenceClickListener

java - 如何测试实用程序项目的 final方法和静态方法?

java - 从较大的数字中提取较小的数字