title: convert excel file to pdf using java, itext and POI API and retain the settings
body: <p>I have an Excel file that has 5 columns having few merged cells, blank cells, dates, and other text information (a normal excel file).   </p>
  
  <p>I am reading this file using POI API in java. I am able to convert the file to pdf table using iText jar.  </p>
  
  <p>But, the whole format is not copied into the pdf. (e.g., merged cells come into one column, and other formatting or settings are all gone).   </p>
  
  <p>A simple pdf table is created.   </p>
  
  <p>How do i retain the same format as in excel? (I want exact copy of excel sheet in pdf)   </p>
  
  <p>Here is the code that I am using</p>
  
  <pre><code>     //First we read the Excel file in binary format into FileInputStream
               FileInputStream input_document = new FileInputStream(new File("K:\\DCIN_TER\\DCIN_EPU2\\CIRCUIT FROM BRANCH\\RAINBOW ORDERS\\" + SONo.trim() + "\\" + SONo.trim() + " - Checklist.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&lt;Row&gt; rowIterator = my_worksheet.iterator();
  
               //We will create output PDF document objects at this point
               com.itextpdf.text.Document iText_xls_2_pdf = new com.itextpdf.text.Document();
  
               PdfWriter.getInstance(iText_xls_2_pdf, new FileOutputStream("K:\\DCIN_TER\\DCIN_EPU2\\CIRCUIT FROM BRANCH\\RAINBOW ORDERS\\" + SONo.trim() + "\\" + SONo.trim() + " - Checklist.pdf"));
  
               iText_xls_2_pdf.open();
  
               //we have 5 columns in the Excel sheet, so we create a PDF table with 5 columns; Note: There are ways to make this dynamic in nature, if you want to.
               PdfPTable my_table = new PdfPTable(5);
  
               //We will use the object below to dynamically add new data to the table
               PdfPCell table_cell;
  
               //Loop through rows.
               while(rowIterator.hasNext())
                      {
                       Row rowi = rowIterator.next();
  
                       Iterator&lt;Cell&gt; cellIterator = rowi.cellIterator();
  
                              while(cellIterator.hasNext())
                              {
                                      Cell celli = cellIterator.next(); //Fetch CELL
  
                                      switch(celli.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(celli.getStringCellValue()));
  
                                              //move the code below to suit to your needs
                                              my_table.addCell(table_cell);
  
                                              break;
  
                                              case Cell.CELL_TYPE_NUMERIC:
  
                                              //Push the data from Excel to PDF Cell
                                              table_cell = new PdfPCell(new Phrase("" + celli.getNumericCellValue()));
  
                                              //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  
  </code></pre>
  
  <p>I have attached the excel file as an image  </p>
  
  <p><img src="https://i.stack.imgur.com/gptyL.png" alt="excel file as .png file. As you can see, the file is a simple one. I want the same styles as in Excel in pdf also. Please guide me"></p>