开始

安卓开发中,有时候会遇到到处文件的需求,尤其是平板上的开发,这个需求更为普遍,本文记录导出excel,txt文件的方法,并提供工具类,抛砖引玉,让大家遇到类似需求的时候,处理起来更为顺手。
导出工具类。使用方法

思路

导出txt文件需求比较普遍。直接进行文件读写即可。导出excel文件往往需要借助第三方jar包的帮助完成。(下载链接后续补上)

实现

需求中,往往遇到的情况是将一个列表的数据进行导出。因此本文处理的也是这种情况,直接传入列表即可。

工具类调用方法:

  ExportUtil.writeExcel(DataExportActivity.this, actionLogModels, "excel");

本文以行为日志的记录为例,具体bean类型如下:

    public static class ActionLogModel {private int id;private String action_date;private String action_time;private String user_name;private String user_action;// ... 省略 构造函数// ... 省略 get set 方法}

文件导出工具类

/*** 导出工具类*/
public class ExportUtil {// 内存地址public static String root = Environment.getExternalStorageDirectory().getPath();public static String saveDir =root+"/export";public static void writeExcel(Context context, List<ActionLogModel> actionLogModels, String fileName) throws Exception {if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && getAvailableStorage() > 1000000) {ToastUtil.showShort("SD卡不可用");return;}File file;File dir = new File(saveDir);if (!dir.exists()) {dir.mkdirs();}file = new File(dir, fileName + ".xls");String[] title = {"日志id", "日期", "时间", "用户", "操作"};// 创建Excel工作表WritableWorkbook wwb;OutputStream os = new FileOutputStream(file);wwb = Workbook.createWorkbook(os);// 添加第一个工作表并设置第一个Sheet的名字WritableSheet sheet = wwb.createSheet("用户操作", 0);Label label;for (int i = 0; i < title.length; i++) {// Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z// 在Label对象的子对象中指明单元格的位置和内容label = new Label(i, 0, title[i], getHeader());// 将定义好的单元格添加到工作表中sheet.addCell(label);}for (int i = 0; i < actionLogModels.size(); i++) {ActionLogModel actionLogModel = actionLogModels.get(i);Label id = new Label(0, i + 1, "" + actionLogModel.getId());Label date = new Label(1, i + 1, actionLogModel.getAction_date());Label time = new Label(2, i + 1, actionLogModel.getAction_time());Label user_name = new Label(3, i + 1, actionLogModel.getUser_name());Label user_action = new Label(4, i + 1, actionLogModel.getUser_action());sheet.addCell(id);sheet.addCell(date);sheet.addCell(time);sheet.addCell(user_name);sheet.addCell(user_action);}// 写入数据wwb.write();// 关闭文件wwb.close();ToastUtil.showShort("写入成功");if (file.exists()) {LogUtil.e("文件确实创建了" + file.getAbsolutePath());} else {LogUtil.e("假的,文件就没有创建" + file.getAbsolutePath());}}public static WritableCellFormat getHeader() {WritableFont font = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD);// 定义字体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() {StatFs statFs = new StatFs(root);long blockSize = statFs.getBlockSize();long availableBlocks = statFs.getAvailableBlocks();long availableSize = blockSize * availableBlocks;// Formatter.formatFileSize(context, availableSize);return availableSize;}//写入文件保存在根目录下面public static void writeTxtFile(Context context, List<ActionLogModel> list, String file_name) {File dir = new File(saveDir);if (!dir.exists()) {dir.mkdirs();}File file;
//        String filename = Environment.getExternalStorageDirectory() + "/" + file_name + ".txt";FileOutputStream outputStream;try {file = new File(dir, file_name + ".txt");outputStream = new FileOutputStream(file);
//            outputStream = openFileOutput(filename, MODE_PRIVATE);outputStream.write("日志id\t日期\t\t时间\t用户\t操作\r\n".getBytes("utf-8"));for (ActionLogModel actionLogModel : list) {outputStream.write((actionLogModel.getId() + "\t" + actionLogModel.getAction_date() + "\t" + actionLogModel.getAction_time() + "\t"+ actionLogModel.getUser_name() + "\t" + actionLogModel.getUser_action() + "\r\n").getBytes("utf-8"));}LogUtil.e("path " + file.getAbsolutePath());outputStream.close();} catch (Exception e) {e.printStackTrace();LogUtil.e("异常异常 ");}}
}

安卓导出Excel,txt文件工具类相关推荐

  1. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  2. Java读取.txt文件工具类

    相关工具类代码 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; i ...

  3. poi导出excel色阶设置工具类

    在使用POI导出excel时,如何给某行或者某列设置色阶呢?直接上代码: /*** sheet 设置色阶 在填充数据之后设置色阶* @param sheet*/public static void s ...

  4. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  5. java io文件流序列化_Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类...

    一.properties集合 集合对象Properties类,继承Hashtable,实现Map接口,可以和IO对象结合使用,实现数据的持久存储. 特点: Hashtable的子类,map集合中的方法 ...

  6. folderutils.java_值得分享的超全文件工具类FileUtil

    结合以前的项目开发中遇到的不同的文件操作,在这里基本上提取出了所遇到过的文件操作的工具类. 1 我项目中用到的文件工具类 1 读取raw文件.file文件,drawable文件,asset文件,比如本 ...

  7. Android FileUtil(android文件工具类)

    android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...

  8. golang利用反射写入excel的简单工具类

    golang利用反射写入excel的简单工具类 工具类源码 使用方法 工具类源码 package excelimport ("errors""github.com/tea ...

  9. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

最新文章

  1. 使用 Vagrant 在不同的操作系统上测试你的脚本
  2. shiro系列二、身份验证和授权
  3. GridView中TextBox 有内容,选中当前行CheckBox
  4. 【技术总结】几种常用的无线串行通信技术
  5. python学习之认识字符串
  6. 敏捷测试理论以及实践(2)
  7. 通过yarn上的applicationId杀死hadoop中的任务,或通过hadoop job命令停止任务、yarn container 的日志路径
  8. python password函数_python – Flask-HTTPAuth verify_password函数未接收用户名或密码
  9. 一个使用 SAP Spartacus 开发的电商网站 - Lego 乐高
  10. 【转载保存】Lucene7.1.0超详细的使用文档
  11. 程序员回家过个年,真心不要容易
  12. 已获千赞,从理论到实践!
  13. html区域背景,保存/恢复HTML5 Canvas的背景区域
  14. python正则表达式(1)--特殊字符
  15. 美国大学生数学建模竞赛O奖最高级别国家一等奖论文超全资料分享写作排版编程建模全覆盖资料参赛真实经历小白必拥有
  16. 中兴c语言 面试题,华为,英飞凌,中兴硬件工程师面试题
  17. travis不生效,No builds for this repository
  18. 计算机导论第七章数据库基础,计算机导论教学大纲
  19. UVa12304(计算几何中圆的基本操作)
  20. torch.flatten

热门文章

  1. 面试时,HR问你职业规划,教你如何回答,得100分!
  2. 在代码中实现对各进程内存的监控
  3. EasyNVR流媒体直播之:零基础实现摄像头的全平台直播 (一)内网直播的实现
  4. squeeze 、unsequeeze
  5. Ten Rules of Good Studying
  6. 个人网站到底怎样赚钱 [zt]
  7. Raspberry Pi 4和 Raspberry Pi 4B的区别_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置...
  8. windows 7软件
  9. java excel 饼图,java 导入导出excle 和 生成柱状图饼状图的demo/excle数据如何转成饼状图...
  10. 心怀远方,顶峰相见!!!