2013-04-10 2 views
2

Вот Emp.xls Таблица: -Как извлечь значение ячейки с помощью IText выборки

+-------+-------------+---------------+--------+ 
| EmpId | Name  | Designation | Salary| 
+-------+-------------+---------------+--------+ 
| 1.0 | Akon Roy | project led | 12000.0| 
| 2.0 | Brey Deo | manager  | 13000.0| 
| 3.0 | Dean  | delivery head | 14000.0| 
| 4.0 | Clark  | team led  |155555.0| 
+-------+-------------+---------------+--------+ 

Моя проблема в том, что я хочу создать PDF файл, в котором выходной будет, как: -

Hello <name>, 

здесь имя может быть любым из названия из записи Emp.xls, задается пользователем . Как решить эту проблему, используя iText и Apache poi.

Мой код:

  public static void main(String[] args) { 


     try { 

      FileInputStream inputFile = new FileInputStream("E:\\Emp.xls"); 
      HSSFWorkbook workbook = new HSSFWorkbook(inputFile); 
      HSSFSheet sheet = workbook.getSheetAt(0); 

      //adding row iterator 
      Iterator<Row> rowitr = sheet.iterator(); 
      OutputStream file = new FileOutputStream(new File("E:\\Test.pdf")); 

      Document document = new Document(); 
      PdfWriter.getInstance(document, file); 

      document.open(); 
      document.add(new Paragraph("Hello World, iText")); 
      //document.add(new Paragraph("Dear ")); 

      while(rowitr.hasNext()){ 
       Row row = rowitr.next(); 

       //adding cell iterator 
       Iterator<Cell> cellitr = row.iterator(); 
       while(cellitr.hasNext()){ 
        Cell cell = cellitr.next(); 

      switch(cell.getCellType()){ 
       case Cell.CELL_TYPE_STRING: 
        if(cell.getStringCellValue == "Dean")  
       document.add(new Chunk("Dear " cell.getStringCellValue()+ ",")); 

        } 
       } 
      } 
      document.close(); 
      file.close(); 

     } catch (Exception e) { 

      e.printStackTrace(); 
     } 
    } 

Если это не представляется возможным с IText то мольбы предложить мне любой другой с открытым исходным кодом API Любая помощь приветствуется.

+0

ребята, пожалуйста, помогите мне или дайте мне подсказку, чтобы решить эту проблему. – newBrain

+1

Что вы пробовали? Где вы застряли? Согласно тому, что вы говорите, все довольно прямолинейно. Ваша проблема заключается в извлечении информации из таблицы? Или он создает результат PDF? Или что-то еще? BTW, нет ничего похожего на * iText fetch * ... – mkl

+0

Я пытаюсь получить значение ячейки и сравнить с полем excel name: switch (cell.getCellType()) caseCell.CELL_TYPE_STRING: \t \t \t \t if (cell.getStringCellValue() == "Dean") document.add (новый Chunk (cell.getStringCellValue())); – newBrain

ответ

7

Согласно одному из ваших комментариев к первоначальному вопросу, вы

пытаются получить значение ячейки и сравнить с первенствовать поле Имя, как:

switch(cell.getCellType()) 
{ 
case Cell.CELL_TYPE_STRING: 
    if (cell.getStringCellValue() == "Dean") 
     document.add(new Chunk(cell.getStringCellValue())); 

Т.е. вы используете == для String сравнение.

Это то, что почти никогда не работает, потому что в Java ==, применяемом к объектам, проверяется, ссылается ли объект на экземпляр объекта с обеих сторон. С другой стороны, вы хотите проверить, действительно ли экземпляры String с обеих сторон представляют одну и ту же последовательность символов. Для решения этой задачи, вы должны использовать equals метод:

if ("Dean".equals(cell.getStringCellValue())) 

(я переключился операнды для предотвращения NullPointerExceptions если cell.getStringCellValue() является null по какой-то причине.)

В общем использовании == имеет смысл только для примитив типы данных и объекты, которые, как вам известно, уникальны в том, что они представляют, например enum объектов.

+0

спасибо за помощь. можете ли вы предложить мне бесплатный инструмент для проектирования PDF? – newBrain

+0

К сожалению нет. Pdfs, которые я генерирую, выглядят довольно технически, но не красиво ... – mkl

Смежные вопросы