一。在项目的libs文件夹下面加入jar包

,网上搜索下载,稍后我上传demo,可以从里面得到。

二。

1.生成excel并保持到sd卡,需要先判断sd卡是否可用

获取sd卡可用内存大小,如果太小数据就无法写入

private static long getAvailableStorage(Context context) {String root = context.getExternalFilesDir(null).getPath();
    //获取磁盘使用情况
    StatFs statFs = new StatFs(root);
    long blockSize = statFs.getBlockSize();
    long availableBlocks = statFs.getAvailableBlocks();
    long availableSize = blockSize * availableBlocks;
    // Formatter.formatFileSize(context, availableSize);
    return availableSize;
}

2.表格的第一行表头,可以设置一个样式

public static WritableCellFormat getHeader() {//参数1:字体大小, 2:18,3:粗体,4:斜体
    WritableFont font = new WritableFont(WritableFont.TIMES, 10,
            WritableFont.BOLD, true);// 定义字体
    try {font.setColour(Colour.BLUE);// 蓝色字体
    } catch (WriteException e1) {e1.printStackTrace();
    }//单元格样式
    WritableCellFormat format = new WritableCellFormat(font);
    try {format.setAlignment(jxl.format.Alignment.CENTRE);// 左右居中
        format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 上下居中
        format.setBorder(Border.ALL, BorderLineStyle.THIN,
                Colour.BLACK);// 黑色边框
        format.setBackground(Colour.YELLOW);// 黄色背景
    } catch (WriteException e) {e.printStackTrace();
    }return format;
}

3.创建表格并向里面写入数据(注释比较清晰,自己体会下存入数据方式)

public static void writeToExcel(Context context, List<Order> orders, String fileName) throws Exception {//sd卡是否可用
    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && getAvailableStorage(context) > 1000000) {Toast.makeText(context, "SD卡不可用!", Toast.LENGTH_SHORT).show();
        return;
    }String[] title = {"单号", "电话", "姓名", "地址"};//表头
    File file;
    File dir = new File(context.getExternalFilesDir(null).getPath());
    if (!dir.exists()) {dir.mkdirs();
    }//创建文件
    file = new File(dir, fileName + ".xls");
    //创建Excel表
    WritableWorkbook wwb;
    OutputStream os = new FileOutputStream(file);
    wwb = Workbook.createWorkbook(os);
    //创建第一个表并设置第一格名字
    WritableSheet sheet = wwb.createSheet("单号", 0);//表名
    //第一行头部
    Label label;//(头部4列)
    for (int i = 0; i < title.length; i++) {//每一格是以二维数组的形式存在(列,行)(0,0; 1,0 ;2,0 ;3,0)
        label = new Label(i, 0, title[i], getHeader());//一个单元格;
        sheet.addCell(label);//将单元格加入表中
    }//具体数据(口口口口)
    for (int i = 0; i < orders.size(); i++) {Order order = orders.get(i);
        Label id = new Label(0, i + 1, order.id);
        Label phone = new Label(1, i + 1, order.restPhone);
        Label name = new Label(2, i + 1, order.restName);
        Label addr = new Label(3, i + 1, order.receiverAddr);
        sheet.addCell(id);
        sheet.addCell(phone);
        sheet.addCell(name);
        sheet.addCell(addr);
    }wwb.write();//写入数据
    wwb.close();
    Toast.makeText(context, "写入完成", Toast.LENGTH_SHORT).show();

}

4.模拟的数据类

public class Const {public interface OrderInfo {String[][] orderOne = new String[][]{{"001", "13800000000", "周家", "光谷1路"}, {"002", "13800000000", "吴家", "光谷2路"},
                {"003", "13800000000", "郑家", "光谷3路"}, {"002", "13800000000", "王家", "光谷4路"}};
    }
}

---------------------------下面是完成代码-----------------------

1.写入数据工具

public class FileUtil {public static void writeToExcel(Context context, List<Order> orders, String fileName) throws Exception {//sd卡是否可用
        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && getAvailableStorage(context) > 1000000) {Toast.makeText(context, "SD卡不可用!", Toast.LENGTH_SHORT).show();
            return;
        }String[] title = {"单号", "电话", "姓名", "地址"};//表头
        File file;
        File dir = new File(context.getExternalFilesDir(null).getPath());
        if (!dir.exists()) {dir.mkdirs();
        }//创建文件
        file = new File(dir, fileName + ".xls");
        //创建Excel表
        WritableWorkbook wwb;
        OutputStream os = new FileOutputStream(file);
        wwb = Workbook.createWorkbook(os);
        //创建第一个表并设置第一格名字
        WritableSheet sheet = wwb.createSheet("单号", 0);//表名
        //第一行头部
        Label label;//(头部4列)
        for (int i = 0; i < title.length; i++) {//每一格是以二维数组的形式存在(列,行)(0,0; 1,0 ;2,0 ;3,0)
            label = new Label(i, 0, title[i], getHeader());//一个单元格;
            sheet.addCell(label);//将单元格加入表中
        }//具体数据(口口口口)
        for (int i = 0; i < orders.size(); i++) {Order order = orders.get(i);
            Label id = new Label(0, i + 1, order.id);
            Label phone = new Label(1, i + 1, order.restPhone);
            Label name = new Label(2, i + 1, order.restName);
            Label addr = new Label(3, i + 1, order.receiverAddr);
            sheet.addCell(id);
            sheet.addCell(phone);
            sheet.addCell(name);
            sheet.addCell(addr);
        }wwb.write();//写入数据
        wwb.close();
        Toast.makeText(context, "写入完成", Toast.LENGTH_SHORT).show();

    }/**
     * 表格样式
     *
     * @return
     */
    public static WritableCellFormat getHeader() {//参数1:字体大小, 2:18,3:粗体,4:斜体
        WritableFont font = new WritableFont(WritableFont.TIMES, 10,
                WritableFont.BOLD, true);// 定义字体
        try {font.setColour(Colour.BLUE);// 蓝色字体
        } catch (WriteException e1) {e1.printStackTrace();
        }//单元格样式
        WritableCellFormat format = new WritableCellFormat(font);
        try {format.setAlignment(jxl.format.Alignment.CENTRE);// 左右居中
            format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 上下居中
            format.setBorder(Border.ALL, BorderLineStyle.THIN,
                    Colour.BLACK);// 黑色边框
            format.setBackground(Colour.YELLOW);// 黄色背景
        } catch (WriteException e) {e.printStackTrace();
        }return format;
    }/**
     * 获取SD可用容量
     */
    private static long getAvailableStorage(Context context) {String root = context.getExternalFilesDir(null).getPath();
        //获取磁盘使用情况
        StatFs statFs = new StatFs(root);
        long blockSize = statFs.getBlockSize();
        long availableBlocks = statFs.getAvailableBlocks();
        long availableSize = blockSize * availableBlocks;
        // Formatter.formatFileSize(context, availableSize);
        return availableSize;
    }
}

2.MAinActivity里面使用:点击按钮就写入数据

public class MainActivity extends AppCompatActivity {private Button button;
    List<Order> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.start_btn);
        list = new ArrayList<>();
        int len = Const.OrderInfo.orderOne.length;
        for (int i = 0; i < len ; i++) {Order order = new Order(Const.OrderInfo.orderOne[i][0],Const.OrderInfo.orderOne[i][1],Const.OrderInfo.orderOne[i][2],Const.OrderInfo.orderOne[i][3]);
            list.add(order);
        }button.setOnClickListener(new View.OnClickListener() {@Override
            public void onClick(View v) {try {FileUtil.writeToExcel(MainActivity.this,list,"orderTest");
                } catch (Exception e) {e.printStackTrace();
                }}});
    }
//这两个重写的方法去掉@Override
    public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }@Override
    public boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {return true;
        }return super.onOptionsItemSelected(item);
    }
}

有问题欢迎指出。

android 生成Excel表相关推荐

  1. python+shell 批量获取服务器信息并且生成excel表

    我们工作中,经常需要获取服务器的一些信息,包括软件的和硬件的.例如刚刚接收的服务器,需要批量获取信息确认硬件配置是否符合我们需求,或者维护很长时间的服务器,中间变动了很多,但是服务器信息没有更改,这个 ...

  2. php提交表单到excel,使用php生成excel表单使用很少的非可编辑单元格

    我想使用php生成excelsheet,那么哪种方法或代码更适合用于生成动态excelsheet?请查看屏幕截图,以了解我面临的问题. screenshot of required excel she ...

  3. 根据数据库表结构生成Excel表设计——源码设计说明

    根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...

  4. 根据数据库表结构生成Excel表设计——工具介绍

    根据数据库表结构生成Excel表设计 最近又接手了一些老系统,库表设计啥的都没有,十来个系统,每个系统都几十张表,一个个的补感觉太难了,合计了一下感觉还是搞个工具比较好. 在系统运维的过程中,很多时候 ...

  5. python 查询mysql数据导出excl_python查询mysql并生成excel表

    需求说明 开发不愿意单独为某个项目做后台 并且运营那边需要合并多个表的数据 因此找上了我. 要求每周执行一次.月初也执行一次 要查询2个mysql数据库多个表并生成excel表 我的想法 找开发要sq ...

  6. jxl 新版电子表格_Android使用jxl快速生成Excel表

    前言 在Android开发时,有些时候需要把app中List集合数据,导出到Excel表中,方便进一步操作.Android可以使用jxl或poi来导出Excel,关于jxl和poi的比较网上有很多说法 ...

  7. Android 的Excel表的数据导出

    前言 用Android 把一些数据用Excel表导出 一.引入jxl库? 1.直接引用 implementation group: 'net.sourceforge.jexcelapi', name: ...

  8. SpringBoot将数据生成Excel表

    1.前言 入职后做的第一个小需求,按照产品的要求将数据库中想要的信息摘取出来生成一张Excel表.因可能涉及公司,以下代码示例有改动且没有实际运行过,均只代表逻辑思路 2.导入依赖 此功能需要的依赖如 ...

  9. Android使用jxl快速生成Excel表

    super.onCreate();//模拟数据集合students = new ArrayList<Strudent>();for (int i = 1; i <= 10; i++) ...

最新文章

  1. 怎样做好敏捷项目管理?
  2. 在spring cloud eureka中使用ip而不是hostname
  3. Python调用模块发送邮件(粗糙版)
  4. 浅谈流处理算法 (1) – 蓄水池采样
  5. 人生永无止境的意思是什么_励志人生:生活不会给任何脆弱鼓掌。
  6. On the coexistence of transport protocols in data centers
  7. 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
  8. pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)
  9. RabbitMQ负载均衡
  10. react native windows create bundle folder
  11. boost::filesystem 库的简单使用
  12. ESP8266调试-P2P(AP模块与STA模块通信)
  13. 深度学习笔记_基本概念_卷积网络中的通道channel、特征图feature map、过滤器filter和卷积核kernel
  14. 2021-4月最全停词表(1893个),速取
  15. docker阿里云镜像加速
  16. 云服务器上安装jboss_jboss下载_精通jboss下载_下载与安装jboss-华军软件园
  17. 导入数据java生成逆向sql,用于回滚,你试过吗?
  18. 3207: 花神的嘲讽计划Ⅰ
  19. 华为初面+综合面试(Java技术面)附上面试题
  20. 计算机负数是取反加1,负数补码是取反加一,但-42取反后末位是1,如何加1?

热门文章

  1. python外卖点餐系统毕业设计开题报告
  2. 『毒舌吐槽社区』-很多敏感内容,你懂的!
  3. 软件工程小组需求分析--快递代领
  4. 阿里云服务器调用微信支付接口慢的解决方案 (api.mch.weixin.qq.com)
  5. Linux---基础部分
  6. 什么明星有计算机等级证,明星CP名也分等级?朱一龙王一博还好,看到胡一天:太有才了...
  7. 护照港澳通回乡证多功能证件识别阅读器MEPR100接口函数的定义
  8. android获取手机短信记录,android 获取手机电话号码和短信内容
  9. FBX导入Unity中模型没有材质的处理
  10. 「BTC之城」的奇幻漂流