前言

用Android 把一些数据用Excel表导出

一、引入jxl库?

1.直接引用

implementation group: ‘net.sourceforge.jexcelapi’, name: ‘jxl’,
version: ‘2.6.12’

2.下载jar包后引用

网址,怎么引用就不说了。

二、使用步骤

1.创建xml文件

代码如下(示例):

 //返回文件夹路径private static String CreateDir(String dirname){String root = getExternalStorageDirectory().getAbsolutePath()+"/"+dirname;File file = new File(root);//创建文件夹if (!file.exists()) {Log.d(TAG, "onClick: 创建文件夹是否成功"+file.mkdirs());}return file.toString();}private static File CreateFile(String dirpath,String filename) {String fileName = dirpath + "/" + filename + "_" + System.currentTimeMillis() + ".xls";File file = null;try {file = new File(fileName);if (!file.exists()) {Log.d(TAG, "onClick: 创建文件是否成功" + file.createNewFile());}} catch (IOException e) {e.printStackTrace();}return file;}

2.工具类

工具类如下:
代码如下(示例):


public class ExcelUtil {private static String TAG= "ExcelUtil";public static WritableFont arial14font = null;public static WritableCellFormat arial14format = null;public static WritableFont arial10font = null;public static WritableCellFormat arial10format = null;public static WritableFont arial12font = null;public static WritableCellFormat arial12format = null;public final static String UTF8_ENCODING = "UTF-8";public final static String GBK_ENCODING = "GBK";/*** 单元格的格式设置 字体大小 颜色 对齐方式、背景颜色等...*/public static void format() {try {arial14font = new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD);arial14font.setColour(jxl.format.Colour.LIGHT_BLUE);arial14format = new WritableCellFormat(arial14font);arial14format.setAlignment(jxl.format.Alignment.CENTRE);arial14format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);arial14format.setBackground(jxl.format.Colour.VERY_LIGHT_YELLOW);arial10font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);arial10format = new WritableCellFormat(arial10font);arial10format.setAlignment(jxl.format.Alignment.CENTRE);arial10format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);arial10format.setBackground(Colour.GRAY_25);arial12font = new WritableFont(WritableFont.ARIAL, 10);arial12format = new WritableCellFormat(arial12font);arial10format.setAlignment(jxl.format.Alignment.CENTRE);//对齐格式arial12format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置边框} catch (WriteException e) {e.printStackTrace();}}/*** 初始化Excel* @param fileName* @param objList*/public static String initExcel(String dirName,String fileName, List<ExcelData> objList) {String DirPath = CreateDir(dirName);File file = CreateFile(DirPath,fileName);if(file == null){Log.d(TAG, "创建文件失败");return "";}//objList是二维Listformat();WritableWorkbook workbook = null;try {workbook = Workbook.createWorkbook(file);//xls对象for (int j = 0; j < objList.size(); j++) {WritableSheet sheet = workbook.createSheet(objList.get(j).getSheetName(), 0);//工作簿的表对象ArrayList<String> list = (ArrayList<String>) objList.get(j).getTitleNameList();for (int i = 0; i < list.size(); i++) {sheet.addCell(new Label(i, 0, list.get(i), arial10format));}sheet.setRowView(0,350); //设置行高}workbook.write();} catch (Exception e) {e.printStackTrace();} finally {if (workbook != null) {try {workbook.close();} catch (Exception e) {e.printStackTrace();}}}return file.toString();}@SuppressWarnings("unchecked")public static <T> void writeObjListToExcel(List<ExcelData> objList, String fileName, Context c) {if (objList != null && objList.size() > 0) {WritableWorkbook writebook = null;InputStream in = null;try {WorkbookSettings setEncode = new WorkbookSettings();setEncode.setEncoding(UTF8_ENCODING);in = new FileInputStream(new File(fileName));Workbook workbook = Workbook.getWorkbook(in);//打开excelwritebook = Workbook.createWorkbook(new File(fileName),workbook);//得到可操作的excelWritebook对象for(int j=0;j<objList.size();j++){WritableSheet sheet = writebook.getSheet(objList.get(j).getSheetName());for (int y = 0; y < objList.get(j).getDataList().size(); y++) {ArrayList<String> list = (ArrayList<String>) objList.get(j).getDataList().get(y);for (int i = 0; i < list.size(); i++) {sheet.addCell(new Label(i, y + 1, list.get(i),arial12format));if (list.get(i).length() <= 5){sheet.setColumnView(i,list.get(i).length()+8); //设置列宽}else {sheet.setColumnView(i,list.get(i).length()+5); //设置列宽}}sheet.setRowView(y+1,350); //设置行高}}//
//                WritableSheet sheet = writebook.getSheet(0);
//
////                sheet.mergeCells(0,1,0,objList.size()); //合并单元格
////                sheet.mergeCells()
//
//                for (int j = 0; j < objList.size(); j++) {//                    ArrayList<String> list = (ArrayList<String>) objList.get(j);
//                    for (int i = 0; i < list.size(); i++) {//                        sheet.addCell(new Label(i, j + 1, list.get(i),arial12format));
//                        if (list.get(i).length() <= 5){//                            sheet.setColumnView(i,list.get(i).length()+8); //设置列宽
//                        }else {//                            sheet.setColumnView(i,list.get(i).length()+5); //设置列宽
//                        }
//                    }
//                    sheet.setRowView(j+1,350); //设置行高
//                }
//writebook.write();Toast.makeText(c, "导出到手机存储中文件夹Record成功", Toast.LENGTH_SHORT).show();} catch (Exception e) {e.printStackTrace();} finally {if (writebook != null) {try {writebook.close();} catch (Exception e) {e.printStackTrace();}}if (in != null) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}}}

3.数据类

数据类如下:
代码如下(示例):

package com.gtkcep.widget.myselfexcel;import java.util.ArrayList;
import java.util.List;public class ExcelData {private List<String> TitleNameList;private String SheetName;private ArrayList<ArrayList<String>> DataList;public <T> ExcelData(List<String> titleNameList, String sheetName, List<T> dataList){this.TitleNameList = titleNameList;this.SheetName = sheetName;this.DataList = getRecordData(dataList);}public List<String> getTitleNameList() {return TitleNameList;}public void setTitleNameList(List<String> titleNameList) {TitleNameList = titleNameList;}public String getSheetName() {return SheetName;}public void setSheetName(String sheetName) {SheetName = sheetName;}public ArrayList<ArrayList<String>> getDataList() {return DataList;}public void setDataList(ArrayList<ArrayList<String>> dataList) {DataList = dataList;}public static <T> ArrayList<ArrayList<String>> getRecordData(List<T> typelist) {ArrayList<ArrayList<String>> recordList;recordList = new ArrayList<>();for (int i = 0; i <typelist.size(); i++) {ArrayList<String> beanList = new ArrayList<String>();switch (typelist.get(0).getClass().getName()){case"com.example.welcometest.ButtonNav_Frament.Student":Object mObject = typelist.get(i);Student student =  (Student)mObject;beanList.add(student.id);beanList.add(student.name);beanList.add(student.sex);beanList.add(student.age);beanList.add(student.classNo);beanList.add(student.math);beanList.add(student.english);beanList.add(student.chinese);recordList.add(beanList);break;}}return recordList;}
}
package com.gtkcep.widget.myselfexcel;/*** Created by Administrator on 2017/4/13.*/public class Student {String name;String sex;String age;String id;String classNo;String math;String english;String chinese;public Student(String name, String sex, String age, String id, String classNo, String math, String english, String chinese) {this.name = name;this.sex = sex;this.age = age;this.id = id;this.classNo = classNo;this.math = math;this.english = english;this.chinese = chinese;}
}

3.使用方法

使用方法如下:
代码如下(示例):

public void onClick(View view) {//标题ListList<String> Title1 = new ArrayList<>();Title1.add("心率");Title1.add("时间");List<String> Title2 = new ArrayList<>();Title2.add("温度");Title2.add("时间");for (int i = 1; i <= 10; i++) {students.add(new Student("小红"+i,"女","12","1"+i,"一班","85","77","98"));students.add(new Student("小明"+i,"男","14","2"+i,"二班","65","57","100"));}//自定义表类,一个代表了一个Sheet去构建它就好了~List<InitExcel> InitExcelList = new ArrayList<>();InitExcelList.add(new InitExcel(Title1,"HeartRate",students));InitExcelList.add(new InitExcel(Title2,"Temperature",students));//初始化Excel表,String FileName = xx.initExcel("recode","louki",InitExcelList);//往Excel表填数据xx.writeObjListToExcel(InitExcelList,FileName,getContext());

借鉴

这是上网查资料有的一个参考。
但是大佬只写了说值对一个Sheet工作的代码段。
所以就把这个拿过来截取了一些东西,然后再上面可以写多个Sheet的Excel。
https://blog.csdn.net/qq_36982160/article/details/82421940

Android 的Excel表的数据导出相关推荐

  1. phpMyAdmin将数据表中数据导出为csv文件,用微软excel打开时,中文乱码的原因以及解决办法

    中文乱码的原因:用户使用phpMyAdmin可以将数据表中数据导出为csv文件,而使用Excel工具打开该文件时,可能出现中文乱码的情况.这是因为phpMyAdmin导出的csv文件使用了UTF-8编 ...

  2. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  3. android excel 筛选功能,Android实现Excel表格展示数据

    前言 在Android开发过程中,我们偶尔会需要将一些数据以Excel表格展示.那么今天就让我们来学习下Excel表格展示相关内容吧 今天涉及的内容: 准备数据model 1.1 ColumnTitl ...

  4. 用python处理excel的基本语法_《使用python3读取处理excel表的数据内容如何对内容求平均值》 用python读取excel文件...

    使用python3读取处理excel表的数据内容如何对内容求平均值 先说下概述: 平就合平均数的值. (a1 a2 --an)/na1,a2,--,an的平均值. 简单算均数.么一组数字10.20.3 ...

  5. code的bootstrap如何有提示 vs_如何用DataFocus对Excel表中数据进行分析?

    常见的数据分析方法有 结构分析.对比分析.平均分析和交叉分析等等.那么,如何用DataFocus进行数据分析?如何对Excel表中数据进行分析呢?接下来,我们先简单看下对Excel表中数据进行结构分析 ...

  6. 还不会用Vue写出的excel表实现pdf导出吗?来,豪豪手把手教你

    关于这excel的pdf导出一问题,正常情况下都会伴随一个点击事件的按钮,为什么?因为你不去点他,让他自己导出吗,用户体验感能好?本内存就小,这倒好,打开一次自动下载并生成一个pdf,就连刷新也是,想 ...

  7. navicat导入excel表中数据出错问题

    navicat导入excel表中数据出错问题 解决办法,修改excel表中重复的字段

  8. 如何用VBA从EXCEL表取数据?问题1:1次性整体写入,还是循环写入数组呢? 问题2:取得数据后如何定位需要的那个?

    1问题 1.1 如何用VBA从EXCEL表取数据? 有时候只是要把EXCEL表的数据读到VBA里 经常,我们需要读入EXCEL的数据,且能明确的知道每列的意义,并且根据某一列(比如 id列/ inde ...

  9. python求excel平均数_#python抓取excel表格数据#使用python3读取处理excel表的数据内容如何对内容求平均值...

    使用python3读取处理excel表的数据内容如何对内容求平均值 先说下概述: 值就是集合平均数. (a1 a2 --an)/n为a1,a2,--,an术平均值. 简单算均数.有这么一组数字10.2 ...

最新文章

  1. Jquery DIV滚动至浏览器顶部后固定不动代码
  2. Python教程:迭代器的正确使用方法
  3. 贪心算法之——喷水装置二(nyoj12)
  4. 操作系统原理:中断,异常,系统调用
  5. 离职113天后,微软的“中国先生”沈向洋云受聘清华大学教授
  6. 【干货】《深度学习:Deep Learning》课程PPT下载
  7. 《大学计算机基础》试题题库及答案
  8. ibm arm-linux,CentOS Linux 7.5 (build 1804) 现可用于IBM POWER9体系结构
  9. 秃头真的是程序员的标配吗
  10. STC12C5A60S2的EEPROM应用
  11. 树莓派frp内网穿透
  12. oauth2单点登录总结
  13. 联想Y50耳机插入耳机孔后没有声音解决办法
  14. 怎样判断计算机硬盘损坏,检测硬盘是否损坏的方法来了,这里有四种判断方法!...
  15. mysql select having_MySQL中SELECT子句WHERE和HAVING的区别
  16. TVS二级管 SMBJ6.0CA系列
  17. OSPF的三张表(链路状态公告)
  18. matlab 连续下标表示,MATLAB通过下标访问多个数组元素
  19. 【GPU精粹与Shader编程】 七 一篇文章读完 GPU Gems 3
  20. IOS网络基础学习三:NSURLSession的Download下载任务和代理方法

热门文章

  1. 带exp在线计算机计算器使用,电脑系统自带科学计算器使用方法
  2. Matlab 旋转坐标轴标记文本
  3. 微信公众号python开发_用python如何开发微信公共帐号?
  4. IMSI(MIN)介绍
  5. uTorrent 高级设置方法
  6. 4G<-->5G互操作
  7. python 爬取企业注册信息_读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储...
  8. linux上查看端口信息
  9. 访问hfds报错AccessControlException
  10. Netkeeper联网时报pppoe拨号模块损坏