从excel读取数据并使用Java POI从文本文件中检索相关数据,并在另一个excel中显示结果

时间:2014-03-05 06:26:29

标签: java apache-poi

我想从Excel文件中读取特定的列数据,并在具有附加数据的文本文件中搜索列的相关标题。我想使用Java poi将这些详细信息打印回另一个excel文件。 我的数据如下:

Excel:

Name  Number
ABC   2345
XYZ   6789

文字档案:

Name|Class|School
 ABC|1|bnm
 XYZ|2|hjk
 KOP|3|ert

我希望excel中的输出为:

Name  Class  School
ABC   1      bnm
XYZ   2      hjk





 public static void main(String[] args) throws Exception {
    String filename = System.getProperty("D:/Files/Input.xslx");
        List sheetData = new ArrayList();
        String columnWanted = "Name";
        Integer columnNo = null;
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(filename);
           XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheetAt(0);
            Row firstRow = sheet.getRow(0);
            for(Cell cell:firstRow){
                if (cell.getStringCellValue().equals(columnWanted)){
                    columnNo = cell.getColumnIndex();
                }
            }
            if (columnNo != null){
            for (Row row : sheet) {
               Cell c = row.getCell(columnNo);
               if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) {
                  // Nothing in the cell in this row, skip it
               } else {
                   sheetData.add(c);
                               }
              }System.out.println(sheetData);
            }else{
                System.out.println("could not find column ");
            }
    // Taking a new array list 'arr' for printing result data
            List arr =new ArrayList();
            File f=new File("D:/Files/Details.txt");
            Scanner in=new Scanner(f);
            System.out.println("Read Data From The Txt file ");
            while(in.hasNext())
            {    
    arr.add(in.nextLine());
                        }
            System.out.println(arr);
            }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                fis.close();
            }
        }
     }
        }



 I want help in searching Names in text file taking input from Input.xslx

1 个答案:

答案 0 :(得分:0)

我采取的一般方法是:

  1. 拆分文本文件的行:String[] textRow = in.nextLine().split("\\|");
  2. 如果sheetData.contains(textRow[0])为真,则使用Poi创建三个新单元格。
  3. 顺便说一下,我会在同一个工作簿中创建一个新工作表来编写新单元格。如果需要,可以稍后移动单元格。这意味着,在测试时,您可以在每次实验后删除新的工作表,并且您的“源”工作表将不会被修改。