How to create an excel file in android?

前端 未结 5 722
悲&欢浪女
悲&欢浪女 2020-12-12 15:38

I have to create an excel file programatically. Is there is any API to create an excel file or some other ways?
EDIT on 7th Nov 2011
I tried example Create an

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-12 15:50

    bean class

    class Bean {
            String initial, firstName, middleName, lastName;
    
            Bean(String initial, String firstName, String middleName, String lastName) {
                this.initial = initial;
                this.firstName = firstName;
                this.middleName = middleName;
                this.lastName = lastName;
            }
    
            public String getInitial() {
                return initial;
            }
    
            public String getFirstName() {
                return firstName;
            }
    
            public String getMiddleName() {
                return middleName;
            }
    
            public String getLastName() {
                return lastName;
            }
    
        }
    

    code for creating ExcelSheet

    sheet.addCell(new Label(0, 0, "NameInitial"));
    sheet.addCell(new Label(columnNumber,rowNumber,dataString));

     File directory, sd, file;
        WritableWorkbook workbook;
    
        void createExcelSheet() {
            String csvFile = "ExcelsheetName.xls";
            sd = Environment.getExternalStorageDirectory();
            directory = new File(sd.getAbsolutePath());
            file = new File(directory, csvFile);
            WorkbookSettings wbSettings = new WorkbookSettings();
            wbSettings.setLocale(new Locale("en", "EN"));
            try {
                workbook = Workbook.createWorkbook(file, wbSettings);
                createFirstSheet();
                createSecondSheet();
                //closing cursor
                workbook.write();
                workbook.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        void createFirstSheet() {
            try {
                List listdata = new ArrayList<>();
    
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                //Excel sheet name. 0 (number)represents first sheet
                WritableSheet sheet = workbook.createSheet("sheet1", 0);
                // column and row title
                sheet.addCell(new Label(0, 0, "NameInitial"));
                sheet.addCell(new Label(1, 0, "firstName"));
                sheet.addCell(new Label(2, 0, "middleName"));
                sheet.addCell(new Label(3, 0, "lastName"));
    
                for (int i = 0; i < listdata.size(); i++) {
                    sheet.addCell(new Label(0, i + 1, listdata.get(i).getInitial()));
                    sheet.addCell(new Label(1, i + 1, listdata.get(i).getFirstName()));
                    sheet.addCell(new Label(2, i + 1, listdata.get(i).getMiddleName()));
                    sheet.addCell(new Label(3, i + 1, listdata.get(i).getLastName()));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        void createSecondSheet() {
    
            try {
                List listdata = new ArrayList<>();
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                listdata.add(new Bean("mr","firstName1","middleName1","lastName1"));
                //Excel sheet name. 0 (number)represents first sheet
                WritableSheet sheet = workbook.createSheet("sheet2", 0);
                // column and row title
                sheet.addCell(new Label(0, 0, "NameInitial"));
                sheet.addCell(new Label(1, 0, "firstName"));
                sheet.addCell(new Label(2, 0, "middleName"));
                sheet.addCell(new Label(3, 0, "lastName"));
    
                for (int i = 0; i < listdata.size(); i++) {
                    sheet.addCell(new Label(0, i + 1, listdata.get(i).getInitial()));
                    sheet.addCell(new Label(1, i + 1, listdata.get(i).getFirstName()));
                    sheet.addCell(new Label(2, i + 1, listdata.get(i).getMiddleName()));
                    sheet.addCell(new Label(3, i + 1, listdata.get(i).getLastName()));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    

    Read data from ExcelSheet

     public void readDataFromExcelSheet() {
            List listOfBean = new ArrayList<>();
            try {
                String filename = "ExcelsheetName.xls";
                // Creating Input Stream
                File sd = Environment.getExternalStorageDirectory();
                File directory = new File(sd.getAbsolutePath());
                File file = new File(directory, filename);
                Workbook workbook = null;
                WorkbookSettings ws = new WorkbookSettings();
                ws.setGCDisabled(true);
                workbook = Workbook.getWorkbook(file, ws);
    
                int noOfSheets = workbook.getNumberOfSheets();//this is return how many sheets available in excelsheet
                String sheetsNames[] = workbook.getSheetNames();//this is return all sheets names available in excelsheet
                for (int x = 0; x < noOfSheets; x++)//here take all sheets
                {
                    Sheet sheet = workbook.getSheet(x);//here i taken first sheet
                    int rowCount = sheet.getRows();//count total number of row or data in that sheet
                    for (int i = 0; i < rowCount; i++) {//take every row data
                        Cell[] column = sheet.getRow(i);//take all data of one row
    
                    /*
                     for taking one by one column data 
                    */
                        for (int j = 0; j < column.length; j++) {//take every column data of row
                            System.out.print("" + column[j].getContents() + "\t");//take one by one data
                        }
                    /*
                     for taking column data  
                    */
                        listOfBean.add(new Bean(column[0].getContents(), column[1].getContents(), column[2].getContents(), column[3].getContents()));
    
                    }
    
    //                if you want take different data from different sheets then use switch case
                    Sheet sheet1;
                    int rowCount1;
                    switch (x) {
                        case 0:
                            //write code for sheet 0 read data
                            sheet1 = workbook.getSheet(0);//here i taken first sheet
                            rowCount1 = sheet1.getRows();//count total number of row or data in that sheet
                            for (int i = 0; i < rowCount1; i++) {//take every row data
                                Cell[] column = sheet1.getRow(i);//take all data of one row
                                listOfBean.add(new Bean(column[0].getContents(), column[1].getContents(), column[2].getContents(), column[3].getContents()));
                            }
                            break;
                        case 1:
                            //write code for sheet 1 read data
                            sheet1 = workbook.getSheet(1);//here i taken first sheet
                            rowCount1 = sheet1.getRows();//count total number of row or data in that sheet
                            for (int i = 0; i < rowCount1; i++) {//take every row data
                                Cell[] column = sheet1.getRow(i);//take all data of one row
                                listOfBean.add(new Bean(column[0].getContents(), column[1].getContents(), column[2].getContents(), column[3].getContents()));
                            }
                            break;
                    }
    
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

提交回复
热议问题