Convert csv to xls/xlsx using Apache poi? Convert csv to xls/xlsx using Apache poi? spring spring

Convert csv to xls/xlsx using Apache poi?


You can try following method to create xlsx file using apache-poi.

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");    }}


We can use SXSSF Jar in which we can parse a long file as below:

public static void main( String[] args ) {  try {    //   String fName = args[ 0 ];    String csvFileAddress = "C:\\Users\\psingh\\Desktop\\test\\New folder\\GenericDealerReport - version6.txt"; //csv file address    String xlsxFileAddress = "C:\\Users\\psingh\\Desktop\\trial\\test3.xlsx"; //xlsx file address    SXSSFWorkbook workBook = new SXSSFWorkbook( 1000 );    org.apache.poi.ss.usermodel.Sheet sheet = workBook.createSheet( "sheet1" );    String currentLine = null;    int RowNum = -1;    BufferedReader br = new BufferedReader( new FileReader( csvFileAddress ) );    while ( ( currentLine = br.readLine() ) != null ) {      String str[] = currentLine.split( "\\|" );      RowNum++;      Row currentRow = sheet.createRow( RowNum );      for ( int i = 0; i < str.length; i++ ) {        currentRow.createCell( i )                .setCellValue( str[ i ] );      }    }    DateFormat df = new SimpleDateFormat( "yyyy-mm-dd-HHmmss" );    Date today = Calendar.getInstance()                       .getTime();    String reportDate = df.format( today );    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" );  }}


public static void convertCsvToXlsx(String xlsLocation, String csvLocation) throws Exception {    SXSSFWorkbook workbook = new SXSSFWorkbook();    SXSSFSheet sheet = workbook.createSheet("Sheet");    AtomicReference<Integer> row = new AtomicReference<>(0);    Files.readAllLines(Paths.get(csvLocation)).forEach(line -> {        Row currentRow = sheet.createRow(row.getAndSet(row.get() + 1));        String[] nextLine = line.split(",");        Stream.iterate(0, i -> i + 1).limit(nextLine.length).forEach(i -> {            currentRow.createCell(i).setCellValue(nextLine[i]);        });    });    FileOutputStream fos = new FileOutputStream(new File(xlsLocation));    workbook.write(fos);    fos.flush();}