Android(安卓)数据保存到新建的一个excel表
16lz
2021-01-26
在开发中可能会经常遇到将数据导出到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模板中
需要的源码的可直接下载:点击下载源代码
更多相关文章
- Android项目管理之配置管理
- Android(安卓)解决程序启动时的黑屏问题
- android http 如何使用Put方式进行网络请求
- Android(安卓)Camera API/Camera2 API 相机预览及滤镜、贴纸等处
- Android(安卓)Studio使用USB真机调试
- Android完整知识体系路线(菜鸟-资深-大牛必进之路)
- 当我们讨论流畅度的时候,我们究竟在说什么?
- 使用achartengine开发曲线图相关的Android应用程序(zhuan)
- Eclipse便于开发Android的快捷键大全