简体   繁体   中英

How can I load CSV file into Excel sheet using Java

I have an Excel spreadsheet that has the first sheet designated for the raw data. There are 3 more sheets that are coded to transform and format the data from the raw sheet. The fifth sheet has the final output. How can I use Java:

  1. load the data from the CSV file into the first sheet of the excel file?
  2. save the data from the 5th sheet into the new CSV file.

Also, if the original CSV has thousands of rows, I assume the multi-sheet transformations would take some time before the 5th sheet gets all the final data - is there a way to know?

I would follow this approach:

  1. Load the specific .csv file and prepare to read it with Java
  2. Load the .xlsx file and change it according to your requirements and the data that you get from the .csv file. A small example of how an excel file is changed with Apache POI can be seen below:
try
{
    HashMap<Integer, ArrayList<String>> fileData; // This for example keeps the data from the csv in this form ( 0 -> [ "Column1", "Column2" ]...)

    // Working with the excel file now
    FileInputStream file = new FileInputStream("Data.xlsx");

    XSSFWorkbook workbook = new XSSFWorkbook(file); // getting the Workbook
    XSSFSheet sheet = workbook.getSheetAt(0);
    Cell cell = null;

    AtomicInteger row = new AtomicInteger(0);
    fileData.forEach((key, csvRow) ->
    {
        //Update the value of the cell
        //Retrieve the row and check for null
        HSSFRow sheetRow = sheet.getRow(row);
        if(sheetRow == null)
        {
            sheetRow = sheet.createRow(row);
        }

        for (int i = 0; i < csvRow.size(); i++)
        {
            //Update the value of cell
            cell = sheetRow.getCell(i);
            if(cell == null){
                cell = sheetRow.createCell(i);
            }
            cell.setCellValue(csvRow.get(i));
        }

    });

    file.close();

    FileOutputStream outFile =new FileOutputStream(new File("Data.xlsx"));
    workbook.write(outFile);
    outFile.close();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
  1. After saving the .xlsx file, you can create the .csv file by following this question .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM