最近公司项目需要Android应用读取excel文件内容,所以就找了相关资料,找到两种读取excel文件的方法,下面为大家介绍:

一、jxl 读取excel文件

1.1、添加依赖:

 implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'

1.2、读取excel

 public static void readExcel(Context context) {String logFilePath = Environment.getExternalStorageDirectory() + File.separator + "Visitor" ;File file=  new File(logFilePath,  "test.xls");Log.e("yy","file="+file.getAbsolutePath());try {InputStream is = new FileInputStream(file);Workbook book = Workbook.getWorkbook(is);book.getNumberOfSheets();Sheet sheet = book.getSheet(0);int Rows = sheet.getRows();for (int i = 1; i < Rows; ++i) {String name = (sheet.getCell(0, i)).getContents();String department = (sheet.getCell(1, i)).getContents();String company = (sheet.getCell(2, i)).getContents();String phone = (sheet.getCell(3, i)).getContents();Log.e("yy","第"+i+"行数据="+name+","+department+","+company+","+phone);}book.close();} catch (Exception e) {Log.e("yy",  "e"+e);}}

经过调试发现这种方式只支持97-2003(xls)版本,后来又经过多次尝试 发现下面代码可以支持2007以上版本(xlsx)

    public static String readExcelxlsx() {String logFilePath = Environment.getExternalStorageDirectory() + File.separator + "Visitor";File file = new File(logFilePath, "test.xlsx");String str = "";String v = null;boolean flat = false;List<String> ls = new ArrayList<String>();try {ZipFile xlsxFile = new ZipFile(file);ZipEntry sharedStringXML = xlsxFile.getEntry("xl/sharedStrings.xml");InputStream inputStream = xlsxFile.getInputStream(sharedStringXML);XmlPullParser xmlParser = Xml.newPullParser();xmlParser.setInput(inputStream, "utf-8");int evtType = xmlParser.getEventType();Log.e("=====>", "==xmlParser====>" + xmlParser.toString());while (evtType != XmlPullParser.END_DOCUMENT) {switch (evtType) {case XmlPullParser.START_TAG:String tag = xmlParser.getName();if (tag.equalsIgnoreCase("t")) {ls.add(xmlParser.nextText());Log.e("=====>", "===xmlParser===>" + ls.toString());}break;case XmlPullParser.END_TAG:break;default:break;}evtType = xmlParser.next();}ZipEntry sheetXML = xlsxFile.getEntry("xl/worksheets/sheet1.xml");InputStream inputStreamsheet = xlsxFile.getInputStream(sheetXML);XmlPullParser xmlParsersheet = Xml.newPullParser();xmlParsersheet.setInput(inputStreamsheet, "utf-8");int evtTypesheet = xmlParsersheet.getEventType();while (evtTypesheet != XmlPullParser.END_DOCUMENT) {switch (evtTypesheet) {case XmlPullParser.START_TAG:String tag = xmlParsersheet.getName();Log.e("=====>", "===tag222===>" + tag);if (tag.equalsIgnoreCase("row")) {} else if (tag.equalsIgnoreCase("c")) {String t = xmlParsersheet.getAttributeValue(null, "t");if (t != null) {flat = true;System.out.println(flat + "有");} else {System.out.println(flat + "没有");flat = false;}} else if (tag.equalsIgnoreCase("v")) {v = xmlParsersheet.nextText();if (v != null) {if (flat) {str += ls.get(Integer.parseInt(v)) + " ";} else {str += v + " ";}}}break;case XmlPullParser.END_TAG:if (xmlParsersheet.getName().equalsIgnoreCase("row")&& v != null) {str += "\n";}break;}evtTypesheet = xmlParsersheet.next();}System.out.println(str);} catch (ZipException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}if (str == null) {str = "解析文件出现问题";}return str;}

1.3、经过上面的代码功能是解决了,但是上面这种数据是获取到了 但是对于后续的处理不是很友好,所以又去找了半天找到了poi读取的方法。

二、poi读取excel

2.1、添加依赖

网上各种说法添加的jar比较多,并且伴随各种 包冲突、65K等错误,最终 找到了一个外国小哥简化版的jar包

将上面两个jar 放进libs目录,build 即可,文末会有下载连接

2.2、读取excel

/*** 读取excel   (xls和xlsx)* @return*/public static List<Map<String, String>> readExcel(String columns[]) {String logFilePath = Environment.getExternalStorageDirectory() + File.separator + "Visitor";File file = new File(logFilePath, "test.xls");String filePath=file.getAbsolutePath();Sheet sheet = null;Row row = null;Row rowHeader = null;List<Map<String, String>> list = null;String cellData = null;Workbook wb = null;if (filePath == null) {return null;}String extString = filePath.substring(filePath.lastIndexOf("."));InputStream is = null;try {is = new FileInputStream(filePath);if (".xls".equals(extString)) {wb = new HSSFWorkbook(is);} else if (".xlsx".equals(extString)) {wb = new XSSFWorkbook(is);} else {wb = null;}if (wb != null) {// 用来存放表中数据list = new ArrayList<Map<String, String>>();// 获取第一个sheetsheet = wb.getSheetAt(0);// 获取最大行数int rownum = sheet.getPhysicalNumberOfRows();// 获取第一行rowHeader = sheet.getRow(0);row = sheet.getRow(0);// 获取最大列数int colnum = row.getPhysicalNumberOfCells();for (int i = 1; i < rownum; i++) {Map<String, String> map = new LinkedHashMap<String, String>();row = sheet.getRow(i);if (row != null) {for (int j = 0; j < colnum; j++) {if(columns[j].equals(getCellFormatValue(rowHeader.getCell(j)))){cellData = (String) getCellFormatValue(row.getCell(j));map.put(columns[j], cellData);/*DecimalFormat df = new DecimalFormat("#");System.out.println(    df.format(cellData));*/Log.e("yy","cellData="+cellData);Log.e("yy","map="+map);}}} else {break;}list.add(map);}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return list;}/**    获取单个单元格数据* @param cell* @return* @author lizixiang ,2018-05-08*/public static Object getCellFormatValue(Cell cell) {Object cellValue = null;if (cell != null) {// 判断cell类型switch (cell.getCellType()) {case Cell.CELL_TYPE_NUMERIC: {cellValue = String.valueOf(cell.getNumericCellValue());break;}case Cell.CELL_TYPE_FORMULA: {// 判断cell是否为日期格式if (DateUtil.isCellDateFormatted(cell)) {// 转换为日期格式YYYY-mm-ddcellValue = cell.getDateCellValue();} else {// 数字cellValue = String.valueOf(cell.getNumericCellValue());}break;}case Cell.CELL_TYPE_STRING: {cellValue = cell.getRichStringCellValue().getString();break;}default:cellValue = "";}} else {cellValue = "";}return cellValue;}

2.3、调用

 FileUtil.readExcel(new String[]{"姓名","部门","公司","电话"});

String数组里面对应我们的表头

如下:

5.0以上版本jar

4.0版本jar

最后特别说明: 本文是采用5.0以上版本jar,本代码是否适用于4.0版本jar并未做校验。。

Android 读取excel (支持 xls和xlsx)相关推荐

  1. android excel 筛选功能,Android 实现 Excel 解析 xls 和 xlsx,方法也可以很简单

    Excel 解析,一般来说是在服务端进行的,但是如果移动端要实现解析Excel的功能,那也是有实现的方法的. 不过由于Android 原生用Java/Kotlin实现,所以也可以参考服务端解析Exce ...

  2. java使用poi实现excel保护工作表实例代码(支持.xls和.xlsx)

    java使用poi实现excel保护工作表,支持.xls和.xlsx类型的excel,代码如下: import java.io.FileInputStream; import java.io.File ...

  3. python3 根据sql导出excel文件 支持xls和xlsx

    python3 根据sql导出excel文件 支持xls和xlsx 代码简介: sql_output_excel函数是用来导出excel文件的,其他两个函数是导出xls和xlsx格式的. 使用pymy ...

  4. android读取excel文件_python里读写excel等数据文件的几种常用方式

    python处理数据文件第一步是要读取数据,文件类型主要包括文本文件(csv.txt等).excel文件.数据库文件.api等. 下面整理下python有哪些方式可以读取数据文件. 1. python ...

  5. 如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?

    如何在不使用运行代码的计算机上安装Excel的情况下使用C#创建Excel电子表格? #1楼 我成功地使用了以下开源项目: OOXML格式的ExcelPackage(Office 2007) .XLS ...

  6. android 读取excel数据并保存为xml文件

    今天,简单讲讲android如何  读取excel数据并保存为xml文件. 最近,我这边需要把客户翻译的Excel字符资源作为xml字符资源,当时自己是一个一个的复制,发现效率太低.后来,在网上搜 ...

  7. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  8. Android 读取excel(支持 xls)和 xml

    一.使用jxl 读取excel文件 1.build.gradle的dependencies中加入 implementation 'net.sourceforge.jexcelapi:jxl:2.6.1 ...

  9. java读取excel 支持所有版本

    springmvc 写的一个小例子   读取excel里的数据 并且保存     需要的jar包 为dom4j-1.6.1.jar  poi-3.9-20121203.jar  poi-example ...

最新文章

  1. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )
  2. Linux 软件包管理命令
  3. getpwnam学习
  4. ArcGIS实验教程——实验十六:空间数据查询
  5. 如何动态的生成某种类型的集合呢_知乎画报」的移动端动态化工程实践
  6. Python笔记-windows平台中Flask打包成exe
  7. 红黑树的java实现
  8. ATM机为什么不能存100张?
  9. 设计模式—单例模式(思维导图)
  10. 模块化加载_webpack模块化原理-异步加载模块
  11. xpath获取标签的属性值_[Selenium]12.加餐: 如何手写xpath
  12. 一篇文章带你读懂水晶易表的简介及其安装初识
  13. 根据城市首字母进行分类,区分多音字,获取城市首字母
  14. 0001 工作业务问题_滞纳金公式计算区别实例
  15. 解决 SSL握手失败问题
  16. Tensorflow - 训练中出现 Nan 值
  17. 星际迷航4之抢救未来
  18. 小程序 蓝牙连接(出现的问题和一些解决方法)
  19. 小程序用哪个服务器好,小程序用什么服务器好
  20. python网页开发数据库访问_python 网页读取数据库

热门文章

  1. 前端常用英语总结,持续更新
  2. TypeError: missing 1 required positional argument
  3. Latex中经典三线表、多线表、内容跨行/跨列复杂表的详解与源代码
  4. Pytorch搭建Retinaface人脸检测与关键点定位平台
  5. javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统
  6. java安装_在线学习Java编程的最佳方法
  7. 融资融券个股交易数据获取
  8. 【Redis之轨迹】Redis基础入门(Linux IDEA)(配套工具类例子)
  9. 图像修复序列——FOE模型
  10. 风云毛笔字 手机练习毛笔字 【安卓软件】