Android 将数据保存到已有的固定模板的Excel表中
来源:互联网 发布:湖泽代办网络执照 编辑:程序博客网 时间:2024/05/08 10:46
继上篇文章讲诉的是如何将数据保存到一个新建的Excel表格中,这篇文章咋一起来看下如何将数据保存到一个固定模板的Excel表格中,因为在实际的开发过程中,很多情况下都是公司给提供一个固定模板的Excel表格,然后要求我们将数据填充到固定的单元格中,下面就一起来看下如何实现
先上效果图:
1、一般情况下我们会用第三方的jar包来帮助实现,比如 jxl.jar , poi.jar
点击下载
2、需要注意的是开发的时候(因为项目中用的是 jxl.jar包,所以接下来是以该jar包为主的)
1)、如果你用的是jxl.jar包的话模板的Excel表格必须是97-03版的Excel,否则的话 jxl.jar 是没法进行解析的
2)、如果你用的是poi.jar包的话模板的Excel表格是没有要求
3)、将模板Excel放在raw 或者 assets下
3、同样开发的时候需要注意加上读写权限,尤其在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 { printer(); }
权限回调
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == MY_PERMISSIONS_REQUEST) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { printer(); } else { // Permission Denied Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show(); } return; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
4、指定Excel文件存放的文件夹,并为文件取名
public void saveFile(String fileName, Context context, int rawid) throws IOException { // 首先判断该目录下的文件夹是否存在 File dir = new File(Environment.getExternalStorageDirectory() + "/inspection/"); if (!dir.exists()) { // 文件夹不存在 , 则创建文件夹 dir.mkdirs(); } // 判断目标文件是否存在 File file1 = new File(dir, fileName); if (!file1.exists()) { file1.createNewFile(); // 创建文件 } // 开始进行文件的复制 InputStream input = context.getResources().openRawResource(rawid); // 获取资源文件raw // 标号 try { FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中 // -- 从内存出去 byte[] buffer = new byte[1024]; int len = 0; while ((len = (input.read(buffer))) != -1) { // 读取文件,-- 进到内存 out.write(buffer, 0, len); // 写入数据 ,-- 从内存出 } input.close(); out.close(); // 关闭流 } catch (Exception e) { e.printStackTrace(); } }
5、定义一个printer()方法,将数据存入到指定的Excel单元格中
private void printer() { try { saveFile("radiate1.xls", this, R.raw.radiate1);//文件目录res/raw //现场检查记录 Log.e("ooo","aaa"); String aafileurl = Environment.getExternalStorageDirectory() + "/inspection/radiate1.xls"; String bbfileurl = Environment.getExternalStorageDirectory() + "/inspection/radiate1_printer.xls"; Workbook rwb = Workbook.getWorkbook(new File(aafileurl)); WritableWorkbook wwb = Workbook.createWorkbook(new File(bbfileurl), rwb);// copy WritableSheet wws = wwb.getSheet(0); /** * 按照单元格的(列,行 ) * */ WritableCell wc1_2 = wws.getWritableCell(1, 2); WritableCell wc1_3 = wws.getWritableCell(1, 3); WritableCell wc1_4 = wws.getWritableCell(1, 4); WritableCell wc1_5 = wws.getWritableCell(1, 5); WritableCell wc1_6 = wws.getWritableCell(1, 6); WritableCell wc1_7 = wws.getWritableCell(1, 7); WritableCell wc1_8 = wws.getWritableCell(1, 8); WritableCell wc1_9 = wws.getWritableCell(1, 9); WritableCell wc1_10 = wws.getWritableCell(1, 10); WritableCell wc1_11 = wws.getWritableCell(1, 11); WritableCell wc1_12 = wws.getWritableCell(1, 12); WritableCell wc1_13 = wws.getWritableCell(1, 13); WritableCell wc1_14 = wws.getWritableCell(1, 14); WritableCell wc1_15 = wws.getWritableCell(1, 15); WritableCell wc1_16 = wws.getWritableCell(1, 16); WritableCell wc4_10 = wws.getWritableCell(4, 10); WritableCell wc4_11 = wws.getWritableCell(4, 11); WritableCell wc4_12 = wws.getWritableCell(4, 12); WritableCell wc5_5 = wws.getWritableCell(5, 5); WritableCell wc5_6 = wws.getWritableCell(5, 6); WritableCell wc6_13 = wws.getWritableCell(6, 13); WritableCell wc7_10 = wws.getWritableCell(7, 10); WritableCell wc7_11 = wws.getWritableCell(7, 11); WritableCell wc10_10 = wws.getWritableCell(10, 10); WritableCell wc10_11 = wws.getWritableCell(10, 11); WritableCell wc13_10 = wws.getWritableCell(13, 10); WritableCell wc16_10 = wws.getWritableCell(16, 10); WritableCell wc8_12 = wws.getWritableCell(8, 12); WritableCell wc16_12 = wws.getWritableCell(16, 12); WritableCell wc16_11 = wws.getWritableCell(16, 11); WritableCell wc13_13 = wws.getWritableCell(13, 13); WritableCell wc13_14 = wws.getWritableCell(13, 14); WritableCell wc14_8 = wws.getWritableCell(14, 8); WritableCell wc10_9 = wws.getWritableCell(10, 9); WritableCell wc11_5 = wws.getWritableCell(11, 5); WritableCell wc14_2 = wws.getWritableCell(14, 2); WritableCell wc14_3 = wws.getWritableCell(14, 3); WritableCell wc14_4 = wws.getWritableCell(14, 4); /** * 设置表单的值 */ Label label5_5 = (Label) wc5_5; label5_5.setString("非例行__"+a9.getText().toString()+"__"); Label label5_6 = (Label) wc5_6; label5_6.setString(a12.getText().toString()); Label label14_2 = (Label) wc14_2; label14_2.setString(a3.getText().toString()); Label label14_3 = (Label) wc14_3; label14_3.setString(a5.getText().toString()); Label label14_4 = (Label) wc14_4; label14_4.setString(a7.getText().toString()); Label label11_5 = (Label) wc11_5; label11_5.setString("是否联合检查_"+a10.getText().toString()); Label label14_8 = (Label) wc14_8; label14_8.setString(a15.getText().toString()); Label label10_9 = (Label) wc10_9; label10_9.setString("125I、131I、18F、99mTc、3H、32P、"+a17.getText().toString()); Label label13_14 = (Label) wc13_14; label13_14.setString(a37.getText().toString()); Label label13_13 = (Label) wc13_13; label13_13.setString(a35.getText().toString()+" 人"); Label label16_11 = (Label) wc16_11; label16_11.setString(a32.getText().toString()+" 人"); Label label8_12 = (Label) wc8_12; label8_12.setString("初级培训 "+a31.getText().toString()+" 人"); Label label16_12 = (Label) wc16_12; label16_12.setString(a32.getText().toString()+" 人"); Label label10_10 = (Label) wc10_10; label10_10.setString("Ⅲ类 "+a21.getText().toString()+" 枚"); Label label10_11 = (Label) wc10_11; label10_11.setString("Ⅲ类 "+a27.getText().toString()+" 台"); Label label13_10 = (Label) wc13_10; label13_10.setString("Ⅳ类 "+a22.getText().toString()+" 枚"); Label label16_10 = (Label) wc16_10; label16_10.setString("Ⅴ类 "+a23.getText().toString()+" 枚"); Label label7_10 = (Label) wc7_10; label7_10.setString("Ⅱ类 "+a20.getText().toString()+" 枚"); Label label7_11 = (Label) wc7_11; label7_11.setString("Ⅱ类 "+a26.getText().toString()+" 台"); Label label6_13 = (Label) wc6_13; label6_13.setString(a34.getText().toString()+" 人"); Label label4_10 = (Label) wc4_10; label4_10.setString("Ⅰ类 "+a19.getText().toString()+" 枚"); Label label4_11 = (Label) wc4_11; label4_11.setString("Ⅰ类 "+a25.getText().toString()+" 台"); Label label4_12 = (Label) wc4_12; label4_12.setString("中级培训 "+a30.getText().toString()+" 人"); Label label1_2 = (Label) wc1_2; label1_2.setString(a2.getText().toString()); Label label1_3 = (Label) wc1_3; label1_3.setString(a4.getText().toString()); Label label1_4 = (Label) wc1_4; label1_4.setString("环辐证[ "+a6.getText().toString()+" ]"); Label label1_5 = (Label) wc1_5; label1_5.setString("例行 年度第 "+a8.getText().toString()+" 次"); Label label1_6 = (Label) wc1_6; label1_6.setString(a11.getText().toString()+" 处"); Label label1_7 = (Label) wc1_7; label1_7.setString(a13.getText().toString()); Label label1_8 = (Label) wc1_8; label1_8.setString(a14.getText().toString()); Label label1_9 = (Label) wc1_9; label1_9.setString(a16.getText().toString()); Label label1_10 = (Label) wc1_10; label1_10.setString("共 "+a18.getText().toString()+" 枚"); Label label1_11 = (Label) wc1_11; label1_11.setString("共 "+a24.getText().toString()+" 台"); Label label1_12 = (Label) wc1_12; label1_12.setString("共 "+a29.getText().toString()+" 人"); Label label1_13 = (Label) wc1_13; label1_13.setString(a33.getText().toString()); Label label1_14 = (Label) wc1_14; label1_14.setString(a36.getText().toString()); Label label1_15 = (Label) wc1_15; label1_15.setString(a38.getText().toString()); Label label1_16 = (Label) wc1_16; label1_16.setString("检查人员签字: " +a39.getText().toString()+ " 被检查单位签字: "+a40.getText().toString()); wwb.write(); wwb.close(); rwb.close(); Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show(); //以下代码是连接打印机的,这边没有用到,所以可以忽略 /* File picture = new File(bbfileurl); Uri data_uri = Uri.fromFile(picture); try { String data_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Intent i = new Intent(Intent.ACTION_VIEW); i.setPackage("com.dynamixsoftware.printershare");//未注册之前com.dynamixsoftware.printershare,注册后加上amazon i.setDataAndType(data_uri, data_type); startActivity(i); } catch (Exception e) { //没有找到printershare }*/ } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
下载源码:点击下载源码
查看Android 将数据保存到新建的Excel表,可参考:查看Android 将数据保存到新建的Excel表
查看Android 将数据写入到模板Word里,可参考:将数据写入模板Word
- Android 将数据保存到已有的固定模板的Excel表中
- java 将已有的字符串保存到txt文件中
- 如何把excel中的数据导入到oracle数据已有的表中
- 将List数据保存到Excel中
- 将MATLAB数据保存到Excel中
- 将数据库里的数据保存到本地Excel表中
- android studio 将已有的项目 以module Library的 形式引入到 自己的项目中
- Android--将数据保存到SDCard中
- Android--将数据保存到SDCard中
- 【C#】将DataGridView数据保存到Excel中
- 快速将excel数据保存到Oracle数据库中
- DataSet 转 DataTable 将数据保存到excel中winform
- 将页面上数据保存到excel中
- SSH将Excel中的数据读入保存到数据库中
- 将Excel中的数据保存到Oracle中
- 如何将json数据按照类别保存到excel中
- 通过MFC将数据保存到Excel中
- MFC编程:将数据保存到EXCEL中
- 每天一个Linux命令(2):cd命令
- APK安装过程分析
- 算法分析
- 【C#】c#winform 窗体及其控件的自适应
- mfc 开发文本框 问题总结
- Android 将数据保存到已有的固定模板的Excel表中
- mysql优化笔记——为大型网站加速
- Tomcat与其他HTTP服务器集成
- 按位取反操作
- mac上的matlab的设置工具箱cvx
- android添加开机音乐
- RHEL(CENTOS)6.3/6.4/6.5 guest on VMware prints "UNSUPPORTED HARDWARE DEVICE: CPU"
- VIVADO FIR IP使用方法
- JSTL、EL、ONGL、Struts标签的区别与使用