How to create excel file based on csv file using java?

I have a requirement to create a XLS file based on a CSV file using Java.

Please try me which API is best to create an excel file.

thank

+5
source share
5 answers

I suggest you use the Apache POI framework (specifically the HSSF / XSSF API ) to write the XLS file.

To read a CSV file, I suggest you use OpenCSV , since it takes care of escaped characters, etc. for you.

POI OpenCSV :

import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import au.com.bytecode.opencsv.CSVReader;

class Test {
    public static void main(String[] args) throws IOException {
        Workbook wb = new HSSFWorkbook();
        CreationHelper helper = wb.getCreationHelper();
        Sheet sheet = wb.createSheet("new sheet");

        CSVReader reader = new CSVReader(new FileReader("data.csv"));
        String[] line;
        int r = 0;
        while ((line = reader.readNext()) != null) {
            Row row = sheet.createRow((short) r++);

            for (int i = 0; i < line.length; i++)
                row.createCell(i)
                   .setCellValue(helper.createRichTextString(line[i]));
        }

        // Write the output to a file
        FileOutputStream fileOut = new FileOutputStream("workbook.xls");
        wb.write(fileOut);
        fileOut.close();
    }
}

enter image description hereenter image description here

+23

Apache POI - , Microsoft, MS Excel. csv java- MS Excel.

+6

You can try Aspose.Cells for Java . You can use this component to open a CSV file and save it as an XLS file using Java. It also helps you work with different versions of Excel files.

Disclosure: I work as an evangelist developer at Aspose.

0
source

Using Groovy, I would do it like this:

// groovy to generate large csv file
def GROOVY_HOME = new File( System.getenv('GROOVY_HOME') )
if ( !GROOVY_HOME.canRead() ) {
  println( "Missing environment variable GROOVY_HOME: '${GROOVY_HOME}'" )
  System.exit(0)
}

File file = new File("csv.csv")
if ( file.exists() ) {
    assert file.delete()
    assert file.createNewFile()
}

boolean append = true
FileWriter fileWriter = new FileWriter(file, append)
BufferedWriter buffWriter = new BufferedWriter(fileWriter)

buffWriter.write "sdiType=ReferenceValue,,,\n"
buffWriter.write "ListName,ListStartDate,Value,ValueStartDate\n"
println( "Writing to file 'csv.csv'" )

def y = 5000
while ( y-- > 0 ) {
    buffWriter.write "test" + y + ",1/1/2001,2008,1/1/2001\n"
}

buffWriter.flush()
buffWriter.close()
0
source

All Articles