How to create an excel file in android?

前端 未结 5 692
悲&欢浪女
悲&欢浪女 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<Bean> 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<Bean> 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<Bean> 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();
            }
        }
    
    0 讨论(0)
  • 2020-12-12 15:56

    You can just use android worksheet library.

    Add this in your gradle implementation 'com.github.elirehema:worksheet:0.0.1'

    Implement in your activity class ass

    public class MainActivity extends AppCompatActivity {
    private WorkSheet workSheet;
    private Button button;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        button = findViewById(R.id.create_excel_sheet);
        final String path  = "ExternalFilePath";
        
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    workSheet = new WorkSheet.Builder(getApplicationContext(), path)
                            .setSheet(List<Object>)
                            .writeSheet();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    
    
    }}
    

    Read More

    0 讨论(0)
  • 2020-12-12 15:59

    First You have to go to this link, from which you can download latest library:

    http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.9-20121203.tar.gz

    After that Put below code on onCreate or onResume Mehod:

    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet firstSheet = workbook.createSheet("Sheet No: 1");
    HSSFSheet secondSheet = workbook.createSheet("Sheet No: 2");
    HSSFRow rowA = firstSheet.createRow(0);
    HSSFCell cellA = rowA.createCell(0);
    cellA.setCellValue(new HSSFRichTextString("Sheet One"));
    HSSFRow rowB = secondSheet.createRow(0);
    HSSFCell cellB = rowB.createCell(0);
    cellB.setCellValue(new HSSFRichTextString("Sheet two"));
    FileOutputStream fos = null;
    try {
        String str_path = Environment.getExternalStorageDirectory().toString();
        File file ;
        file = new File(str_path, getString(R.string.app_name) + ".xls");
        fos = new FileOutputStream(file);
        workbook.write(fos);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (fos != null) {
            try {
                fos.flush();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        Toast.makeText(MainActivity.this, "Excel Sheet Generated", Toast.LENGTH_SHORT).show();
    }
    

    // To see this excel file go to File Explorer in eclipse -> SDCard Path -> Excel.xls -> Pull it -> See it.

    0 讨论(0)
  • 2020-12-12 16:01

    Firstly add these dependencies in your app's build.gradle: then follow other answers:

    implementation 'org.apache.poi:poi:3.17'
    implementation 'org.apache.poi:poi-ooxml:3.17'
    
    0 讨论(0)
  • 2020-12-12 16:05

    You could try http://jexcelapi.sourceforge.net/ (see this tutorial for some help), or Apache POI for writing to or reading from Excel files.

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