zoukankan      html  css  js  c++  java
  • Android 将数据写入Execl格式导出U盘、发送邮件

    创建Execl、写入Execl数据、导入U盘

    public WriteExcel(Context mContext){
        this.mContext = mContext;
    }
    
    // 创建excel表
    public void createExcel(File file) {
        deleteExcel(file);
        WritableSheet ws = null;
        try {
            if (!file.exists()) {
                wwb = Workbook.createWorkbook(file);//创建表
                ws = wwb.createSheet("sheet1", 0);//表名 页数
    
                // 在指定单元格插入数据
                Label lbl1 = new Label(0, 0, "标签1");
                Label lbl2 = new Label(1, 0, "标签2");
                Label lbl3 = new Label(2, 0, "标签3");
                Label lbl4 = new Label(3, 0, "标签4");
    
                ws.addCell(lbl1);
                ws.addCell(lbl2);
                ws.addCell(lbl3);
                ws.addCell(lbl4);
    
                // 从内存中写入文件中
                wwb.write();
                wwb.close();
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
     /**向Execl写入数据 
         * @Param ls List<map>数据
         * @Param emeailPath 邮箱地址
         * @Param file 写入的路径,比如U盘路径
         */
    public void writeToExcel(List<Map<String,Object>> ls,String emeailPath,File file) {
    
        try {
            Workbook oldWwb = Workbook.getWorkbook(file);
            wwb = Workbook.createWorkbook(file, oldWwb);
            WritableSheet ws = wwb.getSheet(0);
            // 当前行数
            for (int i = 0; i < ls.size(); i++) {
                int row = ws.getRows();
                Label lab1 = new Label(0, row, ls.get(i).get("数据1") + "");
                Label lab2 = new Label(1, row, ls.get(i).get("数据2") + "");
                Label lab3 = new Label(2, row, ls.get(i).get("数据3") + "");
                Label lab4 = new Label(3, row, ls.get(i).get("数据4") + "");
                ws.addCell(lab1);
                ws.addCell(lab2);
                ws.addCell(lab3);
                ws.addCell(lab4);
            }
                wwb.write();
                wwb.close();
               //判断是写入U盘还是发送邮件
                if (emeailPath != null) {
                    postEmail(emeailPath);
                }else{
                    final ProgressDialog precentDialog=new  ProgressDialog(mContext);
                    precentDialog.setMessage("导出U盘中...");
                    precentDialog.setMax(100);
                    precentDialog.setCanceledOnTouchOutside(false);
                    precentDialog.show();
                    new Thread(){
                        public void run() {
                            //等待进度条
                            for (int i = 0; i < 100; i++) {
                                try {
                                    long l= (long) (Math.random()*200);
                                    Thread.sleep(l);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                precentDialog.setProgress(i);
                            }
                            precentDialog.dismiss();
                            handler.sendEmptyMessage(1);
                        };
                    }.start();
                }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    @SuppressLint("HandlerLeak")
    private Handler handler = new android.os.Handler() {
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            Toast.makeText(mContext,"导入U盘完成!",Toast.LENGTH_SHORT).show();
        }
    };
    
    // 获取Excel文件夹
    public static String getExcelDir() {
        // SD卡指定文件夹
        String sdcardPath = Environment.getExternalStorageDirectory()
                .toString();
        File dir = new File(sdcardPath + File.separator + "Excel");
    
        if (dir.exists()) {
            return dir.toString();
        } else {
            dir.mkdirs();
            Log.e("BAG", "保存路径不存在,");
            return dir.toString();
        }
    }
    //删除文件夹 
    private void deleteExcel(File file){ if(file.exists()){ file.delete(); } }    

     发送带附件的邮件

    private void postEmail(String emailPath){
    
      SimpleDateFormat fmat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String time=fmat.format(new Date(System.currentTimeMillis()));
      //打开execl文件
      String path=getExcelDir()+ File.separator+"CardInfo.xls";
      File file = new File(path);
      if(file.exists()){
          Intent email = new Intent(android.content.Intent.ACTION_SEND);
          email.setType("application/octet-stream");
          //邮件接收者(数组,可以是多位接收者)
          String[] emailReciver = new String[]{emailPath};
    
          String  emailTitle = "信息_"+time;
          String emailContent = "核验信息";
          //设置邮件地址
          email.putExtra(android.content.Intent.EXTRA_EMAIL, emailReciver);
          //设置邮件标题
          email.putExtra(android.content.Intent.EXTRA_SUBJECT, emailTitle);
          //设置发送的内容
          email.putExtra(android.content.Intent.EXTRA_TEXT, emailContent);
          //附件
          email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
          //调用系统的邮件系统
          mContext.startActivity(Intent.createChooser(email, "请选择邮件发送软件"));
      }
    }

     邮箱格式检查的正则表达式

    public static final String REGEX_EMAIL = "^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$";
  • 相关阅读:
    一个简单的loading,纯属自娱自乐
    sql server CTE递归使用测试
    sql-删除无效sql链接
    sql-按周输出每月的周日期范围
    sql-计算每个月星期几有几天
    sql-GOTO跳转
    回滚与撤销
    数据库事务
    mysql 海量数据的存储和访问解决方案
    数据库范式
  • 原文地址:https://www.cnblogs.com/94xiyang/p/9377894.html
Copyright © 2011-2022 走看看