Java Apache POI Excel enregistrer sous PDF
Comment convertir/enregistrer le fichier Excel
en pdf
? J'utilise Java play framework
pour générer des fichiers Excel
et maintenant l'exigence passe à pdf
. Je ne veux pas tout recoder.
Existe-t-il un moyen de convertir en pdf
?
Les fichiers Excel
que je génère proviennent d'un modèle; Je lis le fichier de modèle Excel, j'écris les modifications et je l'enregistre en tant que nouveau fichier Excel. De cette façon, le modèle est inchangé. Il contient une bordure, une image et d'autres formats.
Vous aurez besoin des Java Java et fichiers JAR associés pour que le programme fonctionne. POI v3.8 iText v5.3.4
Essayez cet exemple pour convertir XLS en PDF
Le code complet Java qui accepte les données de la feuille de calcul Excel en entrée et les transforme en données PDF sont fournies ci-dessous:
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
}
}
j'espère que cela t'aidera