如何使用java将xlsx文件转换为csv?

时间:2016-10-27 11:12:43

标签: java

目前我使用下面的代码使用java.Its将Xlsx文件转换为csv花费更多时间,因为下面的代码使用迭代器来执行此过程。但我需要任何其他更好的解决方案,使用java将xlsx转换为csv。请帮助我

{{1}}

谢谢&问候, Tharanya B

3 个答案:

答案 0 :(得分:2)

尝试使用POI API。这是参考链接

Java - Apache POI - Convert XLS/XLSX to CSV

答案 1 :(得分:0)

使用apache POI将xls / xlsx转换为csv的简单方法。

公共类 XLSXToCSVConverter {

public InputStream convertxlstoCSV(InputStream inputStream) throws IOException, InvalidFormatException {

    Workbook wb = WorkbookFactory.create(inputStream);

    return  csvConverter(wb.getSheetAt(0));
}

private InputStream csvConverter(Sheet sheet) {
    Row row = null;
    String str = new String();
    for (int i = 0; i < sheet.getLastRowNum()+1; i++) {
        row = sheet.getRow(i);
        String rowString = new String();
        for (int j = 0; j < 3; j++) {
            if(row.getCell(j)==null) {
                rowString = rowString + Utility.BLANK_SPACE + Utility.COMMA;
            }
            else {
                rowString = rowString + row.getCell(j)+ Utility.COMMA;
            }
        }
        str = str + rowString.substring(0,rowString.length()-1)+ Utility.NEXT_LINE_OPERATOR;
    }
    System.out.println(str);
    return new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8));
}

}

希望这对您有帮助,谢谢。

答案 2 :(得分:0)

text extractors 将转储整个工作簿的 TSV。性能取决于所选的实现方式和您的内存可用性。

然后您可以将其通过管道传输到 CSVPrinter 以获得正确的 CSV 输出。我认为 Excel 单元格不能包含制表符,所以这应该是安全的。如果您的单元格中有换行符,我不确定 TSV 输出是否有效,但如果有效,您可以使用 CSVParser 读取它。

XSSFWorkbook input = new XSSFWorkbook(new File("input.xlsx"));
CSVPrinter output = new CSVPrinter(new FileWriter("output.csv"), CSVFormat.DEFAULT); 

String tsv = new XSSFExcelExtractor(input).getText();
BufferedReader reader = new BufferedReader(new StringReader(tsv));
reader.lines().map(line -> line.split("\t").forEach(output::printRecord);

如果将整个 this 作为 String 缓冲效率太低,请复制提取器的实现并直接写入 CSVPrinter