How to add new sheets to existing excel workbook using apache POI?

前端 未结 5 533
心在旅途
心在旅途 2020-12-15 12:48

I am trying to write List data into multiple excel sheet in one work book. like for first list, the code will create new workbook and create new sheet for list[1], for secon

5条回答
  •  星月不相逢
    2020-12-15 13:16

    To add more than one Excel sheet to a new Excel file, those sheets need to be created from one workbook, and written once to the file output stream

    import java.io.*;
    import java.util.*;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.*;
    
    public class JustATest {
       public static void main(String[] args) throws Exception  {       
    
            XSSFWorkbook AWorkbook = new XSSFWorkbook(); //Create blank workbook 
    
            for (int i = 0; i < 10; i++) {
                XSSFSheet spreadsheet = AWorkbook.createSheet(" Employee "+i);
    
                // the follwing code is to create dummy data in sheets 
                // is similar to the one at tutorialPoint.com
                XSSFRow row;            
                //This data needs to be written (Object[])
                Map < String, Object[] > empinfo =    new TreeMap< String, Object[] >();
                empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
                for (int j = 0; j < i; j++) {
                    empinfo.put( j+2+"", new Object[] {  j+2+"", "Fadel K", "Technical Manager" });                
                }          
                //Iterate over data and write to sheet
                Set keyid = empinfo.keySet();
                int rowid = 0;
                for (String key : keyid){
                   row = spreadsheet.createRow(rowid++);
                   Object [] objectArr = empinfo.get(key);
                   int cellid = 0;
                   for (Object obj : objectArr){
                      Cell cell = row.createCell(cellid++);
                      cell.setCellValue((String)obj);
                   }
                }            
                // dummy data creation over.
            }       
    
            // here you write all sheets at once, by writing the entier workbook
            FileOutputStream out = new FileOutputStream(new File("AllData.xlsx"));
            AWorkbook.write(out);
            out.close();               
       }
    }
    

提交回复
热议问题