Potrzebuje szybkiej pomocy
Parsuje plik z CSV do XLSX plus na tym pliku robie jeszcze parę rzecze ale mam problem z samym zapisem ponieważ
Ponieważ są wiersze w ktorych są cydyszłowy i to powoduje mi rozjechanie się kolumn
Pierw jako separatora używałem ","
private void csvToXlsx(Path csvFilePath, Path excelFilePath) throws Exception {
logger.info("Converting CSV to XLSX" + excelFilePath);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(csvFilePath.toString())));
XSSFWorkbook myWorkBook = new XSSFWorkbook();
FileOutputStream writer = new FileOutputStream(new File(excelFilePath.toString()));
XSSFSheet mySheet = myWorkBook.createSheet();
String line = "";
int rowNo = 0;
while ((line = reader.readLine()) != null) {
String[] columns = line.split(",");
XSSFRow myRow = mySheet.createRow(rowNo);
for (int i = 0; i < columns.length; i++) {
XSSFCell myCell = myRow.createCell(i);
myCell.setCellValue(columns[i]);
}
rowNo++;
}
myWorkBook.write(writer);
writer.close();
}
Następnie chciałem to naprawiac uzywajac Apache commons csv ale tym razem dostaje w kazdym pliku po jednym wierszy. Czy ktos moze mi napisać co robie zle ?
private void csvToXlsx(Path csvFilePath, Path excelFilePath) throws Exception {
logger.info("Converting CSV to XLSX" + excelFilePath);
List<CSVRecord> records = collectAllEntries(csvFilePath);
XSSFWorkbook myWorkBook = new XSSFWorkbook();
FileOutputStream writer = new FileOutputStream(new File(excelFilePath.toString()));
XSSFSheet mySheet = myWorkBook.createSheet();
records.forEach(record -> {
int rowNo = 0;
XSSFRow myRow = mySheet.createRow(rowNo);
for (int i = 0; i < record.size(); i++) {
XSSFCell myCell = myRow.createCell(i);
myCell.setCellValue(record.get(i));
}
rowNo++;
});
myWorkBook.write(writer);
writer.close();
}
ShalomMySpectre