20698


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


CC BY-SA 3.0
2016-01-06T06:58:59.653
20656
2016-01-07T05:10:35.153
12251
question
java csv apache-poi
Apache POIでtsvファイルを読み込む方法


海外のStackOverflowに回答がありましたので、  
翻訳したものを記載します。

\----------------------------------------------------------------

以下のメソッドを利用することで、Apache-POIを使用しながら.xlsxファイルを作成できます。

[code]

    public static void csvToXLSX() {
        try {
            String csvFileAddress = "test.csv"; //csv file address
            String xlsxFileAddress = "test.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(",");
                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");
        } catch (Exception ex) {
            System.out.println(ex.getMessage()+"Exception in try");
        }
    }
    
[/code]

回答者[sankumarsingh](https://stackoverflow.com/users/624003/sankumarsingh)


CC BY-SA 3.0
2016-01-06T16:31:34.463
20681
2016-01-06T16:31:34.463
2017-05-23T12:38:56.083
-1
12251
20656
answer


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]


CC BY-SA 3.0
2016-01-07T05:10:35.153
20698
2016-01-07T05:10:35.153
5778
20656
answer