android 生成Excel表
一。在项目的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表相关推荐
- python+shell 批量获取服务器信息并且生成excel表
我们工作中,经常需要获取服务器的一些信息,包括软件的和硬件的.例如刚刚接收的服务器,需要批量获取信息确认硬件配置是否符合我们需求,或者维护很长时间的服务器,中间变动了很多,但是服务器信息没有更改,这个 ...
- php提交表单到excel,使用php生成excel表单使用很少的非可编辑单元格
我想使用php生成excelsheet,那么哪种方法或代码更适合用于生成动态excelsheet?请查看屏幕截图,以了解我面临的问题. screenshot of required excel she ...
- 根据数据库表结构生成Excel表设计——源码设计说明
根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...
- 根据数据库表结构生成Excel表设计——工具介绍
根据数据库表结构生成Excel表设计 最近又接手了一些老系统,库表设计啥的都没有,十来个系统,每个系统都几十张表,一个个的补感觉太难了,合计了一下感觉还是搞个工具比较好. 在系统运维的过程中,很多时候 ...
- python 查询mysql数据导出excl_python查询mysql并生成excel表
需求说明 开发不愿意单独为某个项目做后台 并且运营那边需要合并多个表的数据 因此找上了我. 要求每周执行一次.月初也执行一次 要查询2个mysql数据库多个表并生成excel表 我的想法 找开发要sq ...
- jxl 新版电子表格_Android使用jxl快速生成Excel表
前言 在Android开发时,有些时候需要把app中List集合数据,导出到Excel表中,方便进一步操作.Android可以使用jxl或poi来导出Excel,关于jxl和poi的比较网上有很多说法 ...
- Android 的Excel表的数据导出
前言 用Android 把一些数据用Excel表导出 一.引入jxl库? 1.直接引用 implementation group: 'net.sourceforge.jexcelapi', name: ...
- SpringBoot将数据生成Excel表
1.前言 入职后做的第一个小需求,按照产品的要求将数据库中想要的信息摘取出来生成一张Excel表.因可能涉及公司,以下代码示例有改动且没有实际运行过,均只代表逻辑思路 2.导入依赖 此功能需要的依赖如 ...
- Android使用jxl快速生成Excel表
super.onCreate();//模拟数据集合students = new ArrayList<Strudent>();for (int i = 1; i <= 10; i++) ...
最新文章
- 怎样做好敏捷项目管理?
- 在spring cloud eureka中使用ip而不是hostname
- Python调用模块发送邮件(粗糙版)
- 浅谈流处理算法 (1) – 蓄水池采样
- 人生永无止境的意思是什么_励志人生:生活不会给任何脆弱鼓掌。
- On the coexistence of transport protocols in data centers
- 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
- pdm 导入mysql 注释_PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)
- RabbitMQ负载均衡
- react native windows create bundle folder
- boost::filesystem 库的简单使用
- ESP8266调试-P2P(AP模块与STA模块通信)
- 深度学习笔记_基本概念_卷积网络中的通道channel、特征图feature map、过滤器filter和卷积核kernel
- 2021-4月最全停词表(1893个),速取
- docker阿里云镜像加速
- 云服务器上安装jboss_jboss下载_精通jboss下载_下载与安装jboss-华军软件园
- 导入数据java生成逆向sql,用于回滚,你试过吗?
- 3207: 花神的嘲讽计划Ⅰ
- 华为初面+综合面试(Java技术面)附上面试题
- 计算机负数是取反加1,负数补码是取反加一,但-42取反后末位是1,如何加1?
热门文章
- python外卖点餐系统毕业设计开题报告
- 『毒舌吐槽社区』-很多敏感内容,你懂的!
- 软件工程小组需求分析--快递代领
- 阿里云服务器调用微信支付接口慢的解决方案 (api.mch.weixin.qq.com)
- Linux---基础部分
- 什么明星有计算机等级证,明星CP名也分等级?朱一龙王一博还好,看到胡一天:太有才了...
- 护照港澳通回乡证多功能证件识别阅读器MEPR100接口函数的定义
- android获取手机短信记录,android 获取手机电话号码和短信内容
- FBX导入Unity中模型没有材质的处理
- 「BTC之城」的奇幻漂流