在Java中将文件保存为CSV(apache poi)
因此,我使用ApachePOI的XSSF模型创建了一个.xlsx文件,其中包含了我需要的所有数据,但是客户机想要的是完全相同的数据,并且在它自己的单元格中的每个值都具有相同的格式,只有在一个.csv文件中。所以,我需要一个不同文件扩展名的相同文件 我试图将文件的扩展名从.xlsx更改为.csv,但打开后,我收到一条警告,说明文件格式和扩展名不匹配,但单击“确定”后,文件将打开,没有任何错误或错误数据。我是否可以将XSSF模型保存为.csv文件,而不出现上述错误 我还尝试使用apache commons中的CSVPrinter,但它将一行中的所有数据写入一个单元格。我知道.csv文件应该是这样的,但客户机想要客户机想要的 CSVPrinter部分代码:在Java中将文件保存为CSV(apache poi),java,excel,csv,apache-poi,Java,Excel,Csv,Apache Poi,因此,我使用ApachePOI的XSSF模型创建了一个.xlsx文件,其中包含了我需要的所有数据,但是客户机想要的是完全相同的数据,并且在它自己的单元格中的每个值都具有相同的格式,只有在一个.csv文件中。所以,我需要一个不同文件扩展名的相同文件 我试图将文件的扩展名从.xlsx更改为.csv,但打开后,我收到一条警告,说明文件格式和扩展名不匹配,但单击“确定”后,文件将打开,没有任何错误或错误数据。我是否可以将XSSF模型保存为.csv文件,而不出现上述错误 我还尝试使用apache comm
FileWriter out = new FileWriter("someFile.csv");
CSVPrinter csvPrinter = new CSVPrinter(out, CSVFormat.EXCEL);
if (workbook != null) {
XSSFSheet sheet1 = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet1.rowIterator();
while (rowIterator.hasNext()) {
Row row1 = rowIterator.next();
Iterator<Cell> cellIterator = row1.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
csvPrinter.print(cell.getStringCellValue());
}
csvPrinter.println();
}
}
csvPrinter.flush();
csvPrinter.close();
在XSSF工作簿中创建和写入数据后调用此函数
如果我必须使用CSVPrinter来完成我需要的工作,有没有一种方法可以不创建.xlsx文件而直接将所需格式的数据写入.csv文件?我找到了解决问题的方法 不是使用CSVPrinter CSVPrinter=新的CSVPrinterout,而是使用CSVFormat.EXCEL;我已将其更改为CSVPrinter CSVPrinter=new CSVPrinterout,CSVFormat.DEFAULT.withDelimiter“;”
出于某种原因,如果有人能向我解释一下,我将不胜感激。以逗号作为分隔符的CSV文件将一行中的所有数据放在一个单元格中,但当我以分号作为分隔符时,它会按照我希望的方式工作。您不需要先使用xls,只需使用CSV编写器,如CSV没有单元格或格式,只是分隔符之间的文本块。电子表格和CSV文件是两种不同的动物。所以你的问题没有意义。投票结束。@BasilBourque我知道,正如我在问题中所写的。。。但是,当您手动将.xlsx文件转换为.csv文件时,数据将保持其原始格式,这正是我的客户想要的谢谢您。你救了我的命: