在开发中可能会经常遇到将数据导出到excel表中,然后调用打印机来将excel打印出来,当然这种情况在java中是经常需要的,但是在Android中可能会比较少这种情况,因为毕竟在Android中要将导出的excel表进行打印的话手机上还得安装打印的相关驱动,但是将数据导入到excel还是经常见到的,下面就一起来分析吧。

     先上效果图:

           


     1、一般情况下我们会用第三方的jar包来帮助实现,比如 jxl.jar , poi.jar

           点击下载开发需要的jar包

           

     2、开发的时候需要注意加上读写权限,尤其在Android 6.0 的时候需要动态去申请读写的权限

          

      if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)                        != PackageManager.PERMISSION_GRANTED) {                    ActivityCompat.requestPermissions(this,                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},                            MY_PERMISSIONS_REQUEST);                } else {                    saveToExcel.writeToExcel(name,sex,phone,address);                }

            权限回调

      @Override      public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        if (requestCode == MY_PERMISSIONS_REQUEST) {            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {                saveToExcel.writeToExcel(name,sex,phone,address);            } else {                // Permission Denied                Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();            }            return;        }        super.onRequestPermissionsResult(requestCode, permissions, grantResults);    }

       3、指定Excel文件存放的文件夹,并为文件取名

            

     public static String getExcelDir() {        // SD卡指定文件夹        String sdcardPath = Environment.getExternalStorageDirectory()                .toString();        File dir = new File(sdcardPath + File.separator + "Excel"                + File.separator + "Person");        if (dir.exists()) {            return dir.toString();        } else {            dir.mkdirs();            Log.e("BAG", "保存路径不存在,");            return dir.toString();        }    }
       在activity 中进行调用 :

    String excelPath = getExcelDir()+ File.separator+"demo.xls";

      4、将数据存入到Excel表中,在这里写了一个工具类saveToExcel(),具体代码如下

          

   public class SaveToExcelUtil {    private WritableWorkbook wwb;    private String excelPath;    private File excelFile;    private Activity activity;    public SaveToExcelUtil(Activity activity, String excelPath) {        this.excelPath = excelPath;        this.activity = activity;        excelFile = new File(excelPath);        createExcel(excelFile);    }    // 创建excel表.    public void createExcel(File file) {        WritableSheet ws = null;        try {            if (!file.exists()) {                wwb = Workbook.createWorkbook(file);                ws = wwb.createSheet("sheet1", 0);                // 在指定单元格插入数据                Label lbl1 = new Label(0, 0, "姓名");                Label lbl2 = new Label(1, 0, "性别");                Label lbl3 = new Label(2, 0, "电话");                Label lbl4 = new Label(3, 0, "地址");                ws.addCell(lbl1);                ws.addCell(lbl2);                ws.addCell(lbl3);                ws.addCell(lbl4);                // 从内存中写入文件中                wwb.write();                wwb.close();            }        } catch (Exception e) {            e.printStackTrace();        }    }       //将数据存入到Excel表中    public void writeToExcel(Object... args) {        try {            Workbook oldWwb = Workbook.getWorkbook(excelFile);            wwb = Workbook.createWorkbook(excelFile, oldWwb);            WritableSheet ws = wwb.getSheet(0);            // 当前行数            int row = ws.getRows();            Label lab1 = new Label(0, row, args[0] + "");            Label lab2 = new Label(1, row, args[1] + "");            Label lab3 = new Label(2, row, args[2] + "");            Label lab4 = new Label(3, row, args[3] + "");            ws.addCell(lab1);            ws.addCell(lab2);            ws.addCell(lab3);            ws.addCell(lab4);            // 从内存中写入文件中,只能刷一次.            wwb.write();            wwb.close();            Toast.makeText(activity, "保存成功", Toast.LENGTH_SHORT).show();        } catch (Exception e) {            e.printStackTrace();        }    }   }

       如果开发中需要向指定模板的Excel中写入数据,可以参考我的下一篇文章:

            Android 将数据保存到模板中的Excel

         如果开发中需要想制定的Word模板中写入数据,可参考:

          将数据写入到制定的Word模板中

    需要的源码的可直接下载:点击下载源代码

           

更多相关文章

  1. Android项目管理之配置管理
  2. Android(安卓)解决程序启动时的黑屏问题
  3. android http 如何使用Put方式进行网络请求
  4. Android(安卓)Camera API/Camera2 API 相机预览及滤镜、贴纸等处
  5. Android(安卓)Studio使用USB真机调试
  6. Android完整知识体系路线(菜鸟-资深-大牛必进之路)
  7. 当我们讨论流畅度的时候,我们究竟在说什么?
  8. 使用achartengine开发曲线图相关的Android应用程序(zhuan)
  9. Eclipse便于开发Android的快捷键大全

随机推荐

  1. [android]8大android调试工具-monkey,jdb
  2. (五)Android UI相关知识总结(转)
  3. Android(安卓)数据库操作 以及命令行上操
  4. Android逆向
  5. Android设置Activity透明背景样式
  6. android 游戏导引(1. 建立 OpenGL 项目)
  7. Android 从properties配置文件读取数据
  8. Android布局layout中的一些属性(转)
  9. AirFree远程协助(Android)
  10. Android应用层学习-Intent和Layout