Apache POIでtsvファイルを読み込む方法


Javaを使ってtsvファイルをxlsx形式に変換する方法を探しています。  
出来ればApachePOIを使って実現できないでしょうか？




tab区切りの場合は以下のコードで可能です。

poi 3.13 + poi-ooxml 3.13で動作検証しました。

[code]

    public void csvToXLSX() throws Exception {
      String classpath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
      String csvFileAddress = classpath + "/test_tab.csv"; // csv file address
      String xlsxFileAddress = classpath + "/test_tab.xlsx"; // xlsx file  address
      XSSFWorkbook workBook = new XSSFWorkbook();
      XSSFSheet sheet = workBook.createSheet("sheet1");
      String currentLine = null;
      int RowNum = 0;
      BufferedReader br = new BufferedReader(new FileReader(csvFileAddress));
      while ((currentLine = br.readLine()) != null) {
        String str[] = currentLine.split("\\t");
        RowNum++;
        XSSFRow currentRow = sheet.createRow(RowNum);
        for (int i = 0; i < str.length; i++) {
          currentRow.createCell(i).setCellValue(str[i]);
        }
      }
    
      FileOutputStream fileOutputStream = new FileOutputStream(xlsxFileAddress);
      workBook.write(fileOutputStream);
      fileOutputStream.close();
      System.out.println("Done");
    }
    
[/code]




tab区切りの場合は以下のコードで可能です。

poi 3.13 + poi-ooxml 3.13で動作検証しました。

[code]

    public void csvToXLSX() throws Exception {
      String classpath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
      String csvFileAddress = classpath + "/test_tab.csv"; // csv file address
      String xlsxFileAddress = classpath + "/test_tab.xlsx"; // xlsx file  address
      XSSFWorkbook workBook = new XSSFWorkbook();
      XSSFSheet sheet = workBook.createSheet("sheet1");
      String currentLine = null;
      int RowNum = 0;
      BufferedReader br = new BufferedReader(new FileReader(csvFileAddress));
      while ((currentLine = br.readLine()) != null) {
        String str[] = currentLine.split("\\t");
        RowNum++;
        XSSFRow currentRow = sheet.createRow(RowNum);
        for (int i = 0; i < str.length; i++) {
          currentRow.createCell(i).setCellValue(str[i]);
        }
      }
    
      FileOutputStream fileOutputStream = new FileOutputStream(xlsxFileAddress);
      workBook.write(fileOutputStream);
      fileOutputStream.close();
      System.out.println("Done");
    }
    
[/code]

