Android解析及生成Excel文件(JXL)(xls格式)

jar包及代码:http://download.csdn.net/download/eueheuen/10237300


使用:(例子)

1.我们的实体类Bean

public class MyMathBean {
    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

2.我们的解析工具类

public class XlsMathUtil {

    public static ArrayList<MyMathBean> getXlsData(final String xlsName, final int index, Context context){
        final ArrayList<MyMathBean> excelBeens = new ArrayList<>();
        final AssetManager assetManager = context.getAssets();

        try {
            Workbook workbook = Workbook.getWorkbook(assetManager.open(xlsName));
            Sheet sheet = workbook.getSheet(index);

            int sheetNum = workbook.getNumberOfSheets();
            //行
            int sheetRows = sheet.getRows();
            //列
            int sheetColumns = sheet.getColumns();

            for (int i = 0; i < sheetRows; i++) {
                MyMathBean myMathBean = new MyMathBean();
                myMathBean.setValue(sheet.getCell(0,i).getContents()+"");
                excelBeens.add(myMathBean);
            }
            Log.d("XlsDataUtil", "excelBeens.size():" + excelBeens.size());
            workbook.close();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (BiffException e) {
            e.printStackTrace();
        }

        return excelBeens;
    }


    public static void crateExcel(List<Double>data) {
        try {
//            SimpleDateFormat mFormat = new SimpleDateFormat("yyyyMMddHHmmss");
//            Date date = new Date(System.currentTimeMillis());
//            //图片名称
//            String mFileName = "/" + mFormat.format(date) + ".xls";
            //图片路径
            File tempPath = Environment.getExternalStorageDirectory();
            //        WritableWorkbook book = Workbook.createWorkbook(new File(tempPath+mFileName));
            // 打开文件
            WritableWorkbook book = Workbook.createWorkbook(new File(tempPath+"/test.xls"));
            // 生成名为“第一张工作表”的工作表,参数0表示这是第一页
            WritableSheet sheet = book.createSheet("每段差值", 0);

            //设置行高,设置第一行高度为100,参数1:行数,参数2:高度
            //       sheet.setRowView(0, 100);
            //设置列宽,设置第一列宽度为50,参数1:列数,参数2:宽度
            //       sheet.setColumnView(0, 50);

            //合并单元格,参数1:合并的起始列数,参数2:合并的起始行数,参数3:合并的截止列数,参数4:合并的截止行数
            //合并第一列第一行到第四列第五行
            //       sheet.mergeCells(0, 0, 3, 4);

            //创建字体,参数1:字体样式,参数2:字号,参数3:粗体
            WritableFont font = new WritableFont(WritableFont.createFont("楷体"), 11, WritableFont.BOLD);
            WritableCellFormat format = new WritableCellFormat(font);

            //设置对齐方式为水平居中
            format.setAlignment(Alignment.CENTRE);
            //设置对齐方式为垂直居中
            format.setVerticalAlignment(VerticalAlignment.CENTRE);

            // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
            // 以及单元格内容为baby
            //    Label label = new Label(0, 0, "baby", format);

            // 将定义好的单元格添加到工作表中
            //    sheet.addCell(label);
            // 生成一个保存数字的单元格,必须使用Number的完整包路径,否则有语法歧义。
            //单元格位置是第二列,第一行,值为123.456

            for (int i = 0; i < data.size(); i++) {
                jxl.write.Number number = new jxl.write.Number(0, i, data.get(i));
                sheet.addCell(number);
            }

            //写入数据并关闭
            book.write();
            book.close();

        } catch (WriteException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}

3.Activity使用

public class DoMathActivity extends AppCompatActivity {

    private ArrayList<MyMathBean>data;
    private List<Double>dataMath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_do_math);

        data = new ArrayList<>();
        dataMath = new ArrayList<>();

        new Thread(new Runnable() {
            @Override
            public void run() {

                data.addAll(XlsMathUtil.getXlsData("androidmath.xls",0,DoMathActivity.this));

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        for (int i = 0; i < data.size(); i++) {
                           dataMath.add(Double.valueOf(data.get(i).getValue()));
                        }

                        //开始运算,先进行分组
                        List<Double> averageMath = new ArrayList<>();
                        double sumMath = 0;

                        for (int i = 0; i < dataMath.size(); i++) {
                            sumMath+=dataMath.get(i);
                            if (i%200 == 0){
                               averageMath.add(sumMath/200);
                               sumMath=0;
                            }

                        }

                        final List<Double> mathValue = new ArrayList<>();

                        for (int i = 1; i < averageMath.size(); i++) {
                        mathValue.add(averageMath.get(i)-averageMath.get(i-1));
                        }

                        new Thread(new Runnable() {
                            @Override
                            public void run() {

                                XlsMathUtil.crateExcel(mathValue);
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Toast.makeText(DoMathActivity.this,"成功",Toast.LENGTH_SHORT).show();
                                    }
                                });
                            }
                        }).start();


                    }
                });
            }
        }).start();

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值