我正在尝试使用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();
}
}
答案 0 :(得分:1)
如果要保留表格样式,我认为您应该在单元格中设置与样式相关的内容,例如colspan,border,alignment等。
这里是一个示例代码,用于为单元格设置一些样式属性,例如,如果您不希望使用边框,则应将边框设置为NO_BORDER,我不知道您的表是什么样子,因此您应该自己设置样式属性。
您还可以选中iText5 tables and fonts example page或iText7 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);