How list has map values write to excel file using Apache poi

前端 未结 2 1336
难免孤独
难免孤独 2021-01-16 02:52

I\'m getting list hash map key and values like:{1=[ACSS Description1, ACSS Description2, ACSS Description3, SACSS Description4], 2=[11, 1, 4, 12]}

I wou

相关标签:
2条回答
  • 2021-01-16 03:12

    HashMap Sheetmap = new HashMap();

         SheetColumnName s1 = new  SheetColumnName(1);
         s1.setFile_Name("Censtar Energy- Elect.xlsx");
    
         Sheetmap.put(s1, s1.setState("A7"));
         Sheetmap.put(s1, s1.setZone("B7"));
    
         SheetColumnName s2 = new  SheetColumnName(2);
         s2.setFile_Name("Direct Energy- Elect.xls"); 
         Sheetmap.put(s2, s2.setState("A55"));
    
         System.out.println(Sheetmap.get(s1));
         System.out.println(Sheetmap.get(s2));
    
        Collection<String> values = Sheetmap.values();
    
         ArrayList<String> listOfValues = new ArrayList<String>(values);
    
         for (String value : listOfValues) 
         {
                System.out.println(value);
                FileReader fileReader=new FileReader();
                fileReader.ProcessFile(s1.getFile_Name(),value);
         }
    
    0 讨论(0)
  • 2021-01-16 03:23

    I create a class contains methods that will help you to:

    Put your data from Criteria criteria=hibernateTemplate.getSessionFactory().openSession().createCriteria(ExportReport.‌​class); List<ExportReport> list = criteria.list(); to a map

    Create a Xlsx file and initialize it with the number of the rows and cells needed for writing the data from map.

    Write the data from map to Xlsx file

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    
    public class UtilsMethod {
    
        private XSSFWorkbook workbook = new XSSFWorkbook();
    
        /*
         * Take a Map of integer and List of string and
         *Create a Xlsx file on given path with number of row equal to size of nameList And number of Cell equal to keyset size
         */
        public void initializeExcelFile(Map<Integer,List<String>>hashmap,String path) throws IOException{
    
            FileOutputStream out = new FileOutputStream( new File(path));
            Set<Integer> keyset = hashmap.keySet();
            XSSFSheet sheet = workbook.createSheet();
            XSSFRow row = null;
            List<String> nameList = hashmap.get(keyset.toArray()[0]);
    
            for(int j=1; j<nameList.size()+1;j++){
                row = sheet.createRow(j);
                if(null != row){
                    for(int i=0;i<keyset.size();i++){
                        row.createCell(i);
                    }
                }
            }
    
            workbook.write(out);
            out.close();
        }
    
        /*
         * Use initializeExcelFile(hashmap,path) to initialize a Xlsx file in given path 
         * After that, write the  content of hashmap into Xlsx file
         */
        public void writeToExcelfile(Map<Integer,List<String>>hashmap,String path) throws IOException{
    
            Set<Integer> keyset = hashmap.keySet();
            InputStream inp = new FileInputStream( new File(path));
            FileOutputStream out = new FileOutputStream( new File(path));
            int rownum = 1;
            int cellnum = 0;
    
            initializeExcelFile(hashmap,path);
    
            workbook = new XSSFWorkbook(inp);
    
            XSSFSheet sheet = workbook.getSheetAt(0);
    
            for(Integer key : keyset){
                List<String> nameList = hashmap.get(key);
                for(String s : nameList){
                    XSSFRow row = sheet.getRow(rownum++);
                    Cell cell = row.getCell(cellnum);
                    if(null!=cell){
                        cell.setCellValue(s);
                    }
                }
                cellnum++;
                rownum=1;
            }
    
            workbook.write(out);
            out.close();
            inp.close();
        }
    
        public Map<Integer,List<String>> putListIntoMap(List<ExportReport>exportReports) {
    
            Map<Integer,List<String>> exportRep = new TreeMap<Integer, List<String>>();
            List<String> descriptions = new ArrayList<String>();
            List<String> exportIntervalIds = new ArrayList<String>();
    
            for(ExportReport report:exportReports){
                descriptions.add(report.getDescription());
                exportIntervalIds.add(report.getExportIntervalId().toString());
            }
    
            exportRep.put(1, descriptions);
            exportRep.put(2, exportIntervalIds);
    
            return exportRep;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
        }
    
    }
    

    And test Class for testing all UtilsMethod class' method

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    
    public class Test {
    
    
        public static void main(String[] args) throws IOException {
    
            ExportReport exportReport = new ExportReport();
            exportReport.setExportIntervalId(11);
            exportReport.setDescription("ACCSDESCRIPTION1");
    
            ExportReport exportReport2 = new ExportReport();
            exportReport2.setExportIntervalId(1);
            exportReport2.setDescription("ACCSDESCRIPTION2");
    
            ExportReport exportReport3 = new ExportReport();
            exportReport3.setExportIntervalId(4);
            exportReport3.setDescription("ACCSDESCRIPTION3");
    
            ExportReport exportReport4 = new ExportReport();
            exportReport4.setExportIntervalId(12);
            exportReport4.setDescription("ACCSDESCRIPTION4");
    
            List<ExportReport> exportReports = new ArrayList<ExportReport>();
    
            exportReports.add(exportReport);
            exportReports.add(exportReport2);
            exportReports.add(exportReport3);
            exportReports.add(exportReport4);
    
            UtilsMethod utilsMethod = new UtilsMethod();
    
            Map<Integer,List<String>> map = utilsMethod.putListIntoMap(exportReports);
            System.out.println(map);
    
    
            utilsMethod.writeToExcelfile(map, "Writesheet.xlsx");
    
            System.out.println("Writesheet.xlsx written successfully" );
    
        }
    
    }
    

    After running Test class, you will get this Xlsx file

    enter image description here

    0 讨论(0)
提交回复
热议问题