Android系统直接输出Excel文档
Android系统直接输出Excel文档
一、背景
- 以前Android设备只具备生成txt的能力,数据内容不直观,可读性较差,如果需要Excel文档数据,通常要通过PC软件来进行二次封装和转化,步骤多且繁琐。
- 随着生产过程的深入,越来越需要Android设备直接转化并产出Excel类型文档,提高效率和准确性。
- 鉴于以上问题,我们尝试引入WEB端常用的处理Excel表格的解决方案
JXL
的使用。
二、JXL的特点
- 一个轻量级的JS插件用于创建与Excel兼容并基于WEB的交互式表格和电子表格
- 读取和写入Excel电子表格数据
- 生成Excel格式的电子表格数据
- 支持对字体,数字,日期的格式化
- 支持对单元格加阴影和加色彩
- 修改存在的工作表
- 支持图片的创建
- 日志记录可以定制
三、JXL在Android端如何引入
implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
api 'net.sourceforge.jexcelapi:jxl:2.6.12'
四、JXL介绍
主要API介绍
- Workbook:读工作簿
- WritableWorkbook:写工作簿
- Sheet:读工作表
- WritableSheet:写工作表
- Cell:读单元格
- WritableCell:写单元格
- Label:单元格内容
应用
excel文件由一个工作簿(Workbook)组成,工作簿由工作表(sheet)组成,每个工作表又由很多单元格(cell)组成- WritableFont:文本输入的格式
// 字体 ARIAL, 字号 14 bold 粗体 WritableFont arial14font = new WritableFont(WritableFont.ARIAL, 14, BOLD); // 字体的颜色 arial14font.setColour(Colour.BLACK); //设置下划线 arial14font.setUnderlineStyle(UnderlineStyle.SINGLE);
- WritableCellFormat:单元格输入的格式
WritableCellFormat arial14format = new WritableCellFormat(arial14font); // 水平对齐方式 arial14format.setAlignment(Alignment.CENTRE); // 垂直对齐方式 arial14format.setVerticalAlignment(VerticalAlignment.CENTRE); // 边框的格式 arial14format.setBorder(Border.ALL, BorderLineStyle.THIN); // 底色 arial14format.setBackground(Colour.VERY_LIGHT_YELLOW);
- getWorkbook:得到工作簿对象
- createWorkbook:创建一个工作簿对象
第一个参数是必须的:文件或输入流,第二个参数:工作簿是作为读出来的excel的一些约定,如地区,编码等. - createSheet:创建工作表
- getSheet:获取工作表对象
- mergeCells:合并单元格
包含起始第几行、第几列,终到第几行、第几列 - addCell:新增单元格
- new Label():创建单元格内容
包含第几行、第几列、文本内容、格式等入参 - setRowView:设置行
- setColumnView:设置列
五、调用示例
/*** 生成excel*/public boolean toTempReviewExcel(OutputStream excelStream, List<?> dataList) throws Exception {if (dataList == null || dataList.size() == 0) {return false;}// 通过自定义注解获取工作表名称和工作区域信息Class<?> dataType = dataList.get(0).getClass();String sheetName = getSheetName(dataType);List<ExcelClassKey> keys = getKeys(dataType);WritableWorkbook workbook = null;try {// 创建一个工作簿workbook = Workbook.createWorkbook(excelStream);// 创建一个工作表,位置第一个WritableSheet sheet = workbook.createSheet(sheetName, 0);// 第一行内容,合并单元格第1行和第2行,以及第1列和第21列sheet.mergeCells(0, 0, 22, 1);sheet.addCell(new Label(0, 0, sheetName, arial14format));// 添加titlefor (int x = 0; x < keys.size(); x++) {// 合并相邻单元格if (keys.get(x).getIndex() < 2) {sheet.addCell(new Label(x, 8, keys.get(x).getTitle(), arial12format));} else if (keys.get(x).getIndex() == 2) {sheet.mergeCells(x, 8, x + 1, 8); // 合并单元格sheet.addCell(new Label(x, 8, keys.get(x).getTitle(), arial12format));} else {sheet.addCell(new Label(x + 2, 8, keys.get(x).getTitle(), arial12format));}// 设置行高500sheet.setRowView(8, 500);}fieldCache.clear();// 添加数据for (int y = 0; y < dataList.size(); y++) {for (int x = 0; x < keys.size(); x++) {String fieldName = keys.get(x).getFieldName();Field field = getField(dataType, fieldName);Object value = field.get(dataList.get(y));String content = value != null ? value.toString() : "";// 合并相邻单元格if (keys.get(x).getIndex() < 2) {sheet.addCell(new Label(x, y + 9, content, arial12format));} else if (keys.get(x).getIndex() == 2) {sheet.mergeCells(x, y + 9, x + 1, y + 9);sheet.addCell(new Label(x, y + 9, content, arial12format));} else {sheet.addCell(new Label(x + 2, y + 9, content, arial12format));}// 设置行高500sheet.setRowView(y + 9, 500);}}} catch (Exception e) {throw e;} finally {if (workbook != null) {try {workbook.write();// IO操作需要关闭workbook.close();} catch (IOException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}}try {// IO操作需要关闭excelStream.close();} catch (IOException e) {e.printStackTrace();}}return true;}
六、总结
- IO操作需要close()
- 每次createWorkbook的操作,相关格式样式需要重新创建
- 合并和操作单元格需要知道确切的位置信息(第几行、第几列)
- JXL同样支持读物Excel数据,并转化为常用的数据结构,前提是按照表格创建的规则读取
- JXL还提供了复制工作表,复制单元格等操作,可以通过查询API来了解其具体的用法
Android系统直接输出Excel文档相关推荐
- MFC输出EXCEL文档的过程总结
于目前的工作内容涉及到了几处需要输出EXCEL表格的内容,因此在网上也查找了些资料,在下面总结下,以方便使用: 1.当你输出的内容已经在输出的时候全部知道,并且输出格式已经固定,那么你就可以使用下面的 ...
- 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...
文/HALI就职于汽车行业战略部门 专注汽车市场信息情报收集和分析 因为工作需要,每月周期性的更新数据和撰写PPT 报告成为繁重的劳动.结果是很多时间花费在数据处理上,真正的分析工作,往往只能草草收 ...
- “在线Excel文档编辑系统”新手开发训练营开营啦,完全免费,欲报从速!
疫情当前,远程办公风口正盛,腾讯文档.飞书.石墨文档等在线协同办公软件供应商迅速崛起.抓住风口,你也能造就下一个BAT. 本期训练营,将引导您快速开发一款基于Vue框架,简单.能迅速投入使用的在线Ex ...
- Stata outreg2命令中(label)无法正确输出Word/Excel文档
版本:Stata 17,Win10 命令如下: . sysuse auto,clear . outreg2 using test.doc, replace sum(detail) keep(price ...
- php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
phpExcel输出xls文档显示乱码的解决办法 最近在做一些报表的系统,主要是对excel的读取和处理操作. 之前在自己的机器上做开发的时候,没有出现乱码的情况, 即使是我布置到服务器上,导入,导出 ...
- 单sheet页的多个EXCEL文档合并为一个多sheet页的EXCEL文档
文章目录 前言 一.生成多个excel文档 二.合并excel文档 1. excel文档的实质 2.修改文件拓展名为.zip,并解压 3.处理XML文件 4.压缩文件夹组,并修改.zip为.xlsx ...
- VB中操作Excel文档
篇一:利用 Python 操作 Excel文档 利用 Python 操作 Excel 在Excel 2010中打开VBA编辑器,请按 Alt + F11 打开: 以下代码在 Excel ...
- Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档
Solid Converter PDF10.1Crack,将pdf表转换为可编辑的Excel文档 Solid Converter PDF是Solid Documents的软件,可将PDF文档转换为Wo ...
- Python实现谷歌翻译爬虫,翻译PDF,翻译Excel,支持excel文档打开翻译,支持xlsx,xlsm等格式。
前言: 这两个Python脚本是我在实习期间完成的,具体来自于小组主管的两个小需求.做完之后感觉还是挺有收获的. 实现谷歌翻译,首先需要将我们写的Python脚本还有需要翻译的文件放到谷歌浏览器的安装 ...
最新文章
- PHP气缸种类,气缸分类方法有哪些及气缸的种类
- 算法分析与设计之多处最优服务次序问题2
- python中可变参数args_python 可变参数 *args, **kwds
- 20佳精美404错误页面设计欣赏
- 发送ActivityFeed的隐藏功能
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
- Python : *args和**kwargs是什么东东呢?
- 设置日志不记录指定类型的文件,日志文件的切割,配置静态元素过期时间
- turbo码书籍推荐
- The JSR-133 Cookbook for Compiler Writers 中英对照版翻译
- android动态设置渐变背景
- 回味宋朝——文化的盛世
- 项目管理知识体系指南(四)项目管理范围
- 51单片机基础——串口发送66,数码管显示66
- 为什么NFT的头像卖这么贵?这与IPFS/FIL有什么联系
- 中国品牌授权市场规模分析:2020年中国授权商品零售额为1106亿元,同比增长11.5%[图]
- AI开发者被疯抢,华为做了什么?
- 重读 阿里中供系前世今生:马云最神秘的子弟兵二
- 家用计算机按键不灵怎么修,电脑键盘两个ctrl键失灵怎么回事?ctrl键失灵的修复方法...
- java 链表 深拷贝_单链表深拷贝的实现