您当前的位置: 首页 >  android

ZhangJiQun&MXP

暂无认证

  • 1浏览

    0关注

    1187博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android 开发execel文件在内存和外存传递

ZhangJiQun&MXP 发布时间:2019-05-16 19:12:23 ,浏览量:1

需要jxl.jar包,导入到你的项目中:


下载地址:
https://download.csdn.net/my/uploads

package com.example.administrator.myapplication.db;

import android.content.Context;
import android.os.Environment;

import com.example.administrator.myapplication.bean.data_new;
import com.example.administrator.myapplication.common_util.SelfDialog;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

/**
 * Created by Administrator on 2019/5/16 0016.
 */


导出文件到外存



public class ExpportDataBeExcel {
    private Context mContext;

    public ExpportDataBeExcel(Context context) {
        this.mContext = context;
    }

    public void exportData(List datas) {
        //需要导出的excel文件的文件名
        String fileName = "盘点导出表.xls";
        //操作excel的对象
        WritableWorkbook wwb = null;
        try {
            //根据当前的文件路径创建统计的文件并且实例化出一个操作excel的对象
            wwb = Workbook.createWorkbook(new File("/sdcard/盘点导出表.xls"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (wwb != null) {
            //创建底部的选项卡  传参是选项卡的名称  和  选型卡的索引
            WritableSheet writableSheet = wwb.createSheet("页签1", 0);
            //创建excel的表头的信息
//            资产编号
//            资产名称
//            资产分类
//            取得方式
//            规格型号

//            计量单位
//            取得日期
//            财务入账日期
//            价值类型
//            账面数量

//            账面价值
//            盘点数量
//            盘点结果
//            存放地点
//            使用部门

//            使用人
//            备注
            String[] topic = {"资产编号", "资产名称", "资产分类", "取得方式", "规格型号",
                    "计量单位", "取得日期", "财务入账日期", "价值类型", "账面数量",
                    "账面价值", "盘点数量", "盘点结果", "存放地点", "使用部门",
                    "使用人", "备注"};
            for (int i = 0; i < topic.length; i++) {
                //横向的在单元格中填写数据
                Label labelC = new Label(i, 0, topic[i]);
                try {
                    writableSheet.addCell(labelC);
                } catch (WriteException e) {
                    e.printStackTrace();
                }
            }
            //从实体中遍历数据并将数据写入excel文件中
            data_new account;
            ArrayList header = new ArrayList();
//            header.add(0, "  资产编号");
//            header.add(1, "  资产名称 ");
//            header.add(2, "  资产分类   ");
//            header.add(3, "  取得方式   ");
//            header.add(4, "  规格型号   ");
//            header.add(5, "  计量单位   ");
//            header.add(6, "  取得日期   ");
//            header.add(7, "  财务入账日期 ");
//            header.add(8, "  价值类型   ");
//            header.add(9, "  账面数量   ");
//            header.add(10, " 账面价值    ");
//            header.add(11, " 盘点数量    ");
//            header.add(12, " 盘点结果     ");
//            header.add(13, " 存放地点    ");
//            header.add(14, " 使用部门    ");
//            header.add(15, " 使用人     ");
//            header.add(16, " 备注  ");
            ArrayList li_one = new ArrayList();
            ArrayList li = new ArrayList();
            li_one.add("1");
            li_one.add("2");
            li_one.add("3");
            li_one.add("4");
            li_one.add("5");
            li_one.add("6");
            li_one.add("7");
            li_one.add("8");
            li_one.add("9");
            li_one.add("10");
            li_one.add("11");
            li_one.add("12");
            li_one.add("13");
            li_one.add("14");
            li_one.add("15");
            li_one.add("16");
            li_one.add("17");
            for (int j = 0; j < datas.size(); j++) {
                //将数据源列表中的数据整合成 一个个的字符串列表
                //第一行寫入數字等等
                account = datas.get(j);
                li = new ArrayList();

                li.add(account.getNUMBERING());
                li.add(account.getNAME());
                li.add(account.getCLASSIFICATION());
                li.add(account.getGETTING_METHOR());
                li.add(account.getSPECIFICATIONA());
                li.add(account.getCOUNTER());
                li.add(account.getGET_THE_DATA());
                li.add(account.getDATA_O_ENTRY());
                li.add(account.getVALUE_TYPE());
                li.add(account.getBOOK_AMOUNT());
                li.add(account.getVALUE_MONEY());
                li.add(account.getINVENTORY_AMOUNT());

                //盘点结果状态修改
                if (Double.parseDouble(account.getBOOK_AMOUNT()) < Double.parseDouble(account.getINVENTORY_AMOUNT())) {
                    li.add("盘实");//根据要求进行更改
                } else if (Double.parseDouble(account.getBOOK_AMOUNT()) == Double.parseDouble(account.getINVENTORY_AMOUNT())) {
                    li.add("盘实");
                } else if (Double.parseDouble(account.getBOOK_AMOUNT()) > Double.parseDouble(account.getINVENTORY_AMOUNT())) {
                    li.add("盘亏");
                }
                li.add(account.getLOCATION());
                li.add(account.getUSER_OF_DEPARTMENT());
                li.add(account.getUSERS());
                li.add(account.getNOTE());

                int k = 0;
                //写入后面的数据
                for (String l : li) {
                    //将单个的字符串列表横向的填入到excel表中
                    Label labelC = new Label(k, j + 2, l);
                    k++;
                    try {
                        writableSheet.addCell(labelC);
                    } catch (WriteException e) {
                        e.printStackTrace();
                    }
                }
                li = null;
            }
            //写入第一行12345--
            int a=0;
            for (String l : li_one) {
                //将单个的字符串列表横向的填入到excel表中
                Label labelC = new Label(a, 1, l);
                a++;
                try {
                    writableSheet.addCell(labelC);
                } catch (WriteException e) {
                    e.printStackTrace();
                }
            }
        }
        //将文件从内存写入到文件当中
        try {
            wwb.write();
            wwb.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        }
//        SelfDialog.getInstanceYes(mContext, "提示", "确定导出数据", "确定").buildYesDialog();
        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        builder.setTitle("提示");
        builder.setMessage("导出完成");
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(mContext, "导出完成", Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
        FileUtils.renameFile("/sdcard/盘点导出表.xls","/sdcard/盘点导出.xls");

    }
}

 

存在问题:

到出的execel文件在Android studio中文件查看能看到,但是不能save,并且手机连接电脑进行copy不行。我怀疑可能和手机有关,但是还得进一步的测试看看,不一定 啊。现在看了问题,解决办法:对文件进行修改,重命名,移动,复制,都行的,就是在电脑上显示出来的。

 

导到内存

 

public class ImportDataFromExcel {     //将excel文件导入到内存中     private List datas;     public String ImportExcelData(){         datas = new ArrayList();         Workbook workbook = null;         String fileName ="考情统计.xls";         try {             workbook = Workbook.getWorkbook(new File(Environment.getExternalStorageDirectory()+"/"+fileName));             Sheet sheet = workbook.getSheet(0);             int rows = sheet.getRows();             int columns = sheet.getColumns();             //遍历excel文件的每行每列             for (int i=0; i < rows ;i++){                 //遍历行                 List li = new ArrayList();                 for (int j = 0 ; j < columns ; j++ ){                     Cell cell = sheet.getCell(j,i);                     String result = cell.getContents();                     if (i!=0){                         li.add(result);                     }                 }                 if (li.size()>0){                     datas.add(new BeanExportData(li.get(0),li.get(1),li.get(2),li.get(3)));                 }                 li = null;             }             Gson gson = new Gson();             return gson.toJson(datas);         } catch (IOException e) {             e.printStackTrace();         } catch (BiffException e) {             e.printStackTrace();         }         return "error";     } }  

关注
打赏
1665659684
查看更多评论
立即登录/注册

微信扫码登录

0.0425s