一、使用jxl 读取excel文件

1.build.gradle的dependencies中加入

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

2.将xls文件复制到assets文件夹

3.读取文件内容:

public static List<ContentBean> readExcelToAssets(Context context) {List<ContentBean> contentBeans = new ArrayList<>();try {InputStream is = context.getAssets().open("App.xls");Workbook book = Workbook.getWorkbook(is);book.getNumberOfSheets();Sheet sheet = book.getSheet(0);int Rows = sheet.getRows();for (int i = 1; i < Rows; ++i) {String key = (sheet.getCell(0, i)).getContents();List<String> values = new ArrayList<>();String value1 = (sheet.getCell(1, i)).getContents();values.add(value1);String value2 = (sheet.getCell(2, i)).getContents();values.add(value2);String value3 = (sheet.getCell(3, i)).getContents();values.add(value3);String value4 = (sheet.getCell(4, i)).getContents();values.add(value4);String value5 = (sheet.getCell(5, i)).getContents();values.add(value5);contentBeans.add(new ContentBean(key, values));Log.e("FileUtil", "第" + i + "行数据=\n" + key + "," + value1 + "," + value2 + "," + value3 + "," + value4 + "," + value5);}book.close();} catch (Exception e) {Log.e("FileUtil", "e" + e);}return contentBeans;}

二、使用XmlPullParser读取xml文件

1.将xml文件复制到assets文件夹

2.读取文件内容:

/*** 获取XML中所有的指令信息* xml文件内容:* <resources>*     <string name="app_name">APP</string>* </resources>*/public static List<LanguageBean> parseDateSource(Context context) {List<LanguageBean> languageBeans = new ArrayList<>();try {InputStream inputStream = context.getAssets().open("strings.xml");XmlPullParser parse = Xml.newPullParser();parse.setInput(inputStream, "utf-8");int event = parse.getEventType();while (event != XmlPullParser.END_DOCUMENT) {switch (event) {case XmlPullParser.START_DOCUMENT:Log.e("FileUtil", "parseDateSource 初始化指令集合");break;case XmlPullParser.START_TAG:String keys = parse.getName();// <string name="app_name">APP</string>// 读取string标签下的值,key = app_name,value = APPif (keys.equals("string")) {String key = parse.getAttributeValue(null, "name");String value = parse.nextText();Log.e("FileUtil", "START_TAG " + key + "," + value);languageBeans.add(new LanguageBean(key, value));} else {Log.e("FileUtil", "START_TAG keys " + keys);}break;case XmlPullParser.END_TAG:Log.e("FileUtil", "END_TAG");break;default:break;}event = parse.next();// 进入到下一个元素并触发相应事件}} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}return languageBeans;}

完整的FileUtil工具类:

package com.file.util.file;import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.util.Xml;import androidx.annotation.RequiresApi;import com.file.util.MainActivity;
import com.file.util.bean.ContentBean;
import com.file.util.bean.LanguageBean;import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;import jxl.Sheet;
import jxl.Workbook;/*** @Author: Jin* @Description:* @CreateDate: 2022/11/17  16:34*/
public class FileUtil {public static void readExcel(Context context) {String logFilePath = Environment.getExternalStorageDirectory() + File.separator + "Visitor";File file = new File(logFilePath, "test.xls");Log.e("FileUtil", "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("FileUtil", "第" + i + "行数据=" + name + "," + department + "," + company + "," + phone);}book.close();} catch (Exception e) {Log.e("FileUtil", "e" + e);}}public static List<ContentBean> readExcelToAssets(Context context) {List<ContentBean> contentBeans = new ArrayList<>();try {InputStream is = context.getAssets().open("App.xls");Workbook book = Workbook.getWorkbook(is);book.getNumberOfSheets();Sheet sheet = book.getSheet(0);int Rows = sheet.getRows();for (int i = 1; i < Rows; ++i) {String key = (sheet.getCell(0, i)).getContents();List<String> values = new ArrayList<>();String value1 = (sheet.getCell(1, i)).getContents();values.add(value1);String value2 = (sheet.getCell(2, i)).getContents();values.add(value2);String value3 = (sheet.getCell(3, i)).getContents();values.add(value3);String value4 = (sheet.getCell(4, i)).getContents();values.add(value4);String value5 = (sheet.getCell(5, i)).getContents();values.add(value5);contentBeans.add(new ContentBean(key, values));Log.e("FileUtil", "第" + i + "行数据=\n" + key + "," + value1 + "," + value2 + "," + value3 + "," + value4 + "," + value5);}book.close();} catch (Exception e) {Log.e("FileUtil", "e" + e);}return contentBeans;}/*** 获取XML中所有的指令信息* xml文件内容:* <resources>*     <string name="app_name">APP</string>* </resources>*/public static List<LanguageBean> parseDateSource(Context context) {List<LanguageBean> languageBeans = new ArrayList<>();try {InputStream inputStream = context.getAssets().open("strings.xml");XmlPullParser parse = Xml.newPullParser();parse.setInput(inputStream, "utf-8");int event = parse.getEventType();while (event != XmlPullParser.END_DOCUMENT) {switch (event) {case XmlPullParser.START_DOCUMENT:Log.e("FileUtil", "parseDateSource 初始化指令集合");break;case XmlPullParser.START_TAG:String keys = parse.getName();// <string name="app_name">APP</string>// 读取string标签下的值,key = app_name,value = APPif (keys.equals("string")) {String key = parse.getAttributeValue(null, "name");String value = parse.nextText();Log.e("FileUtil", "START_TAG " + key + "," + value);languageBeans.add(new LanguageBean(key, value));} else {Log.e("FileUtil", "START_TAG keys " + keys);}break;case XmlPullParser.END_TAG:Log.e("FileUtil", "END_TAG");break;default:break;}event = parse.next();// 进入到下一个元素并触发相应事件}} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}return languageBeans;}public static List<String> makeContent(Context context, int type) {List<String> contents = new ArrayList<>();List<LanguageBean> languageBeans = FileUtil.parseDateSource(context);List<ContentBean> contentBeans = FileUtil.readExcelToAssets(context);// 寻找语言for (LanguageBean languageBean : languageBeans) {for (ContentBean contentBean : contentBeans) {if (TextUtils.equals(languageBean.getValue(), contentBean.getKey())) {if (contentBean.getValues().size() > type) {languageBean.setValue(contentBean.getValues().get(type));}break;}}}// 组装结果for (LanguageBean languageBean : languageBeans) {String content = "<string name=\"" + languageBean.getKey() + "\">" + languageBean.getValue() + "</string>";Log.i("FileUtil", "makeContent " + content);contents.add(content);}return contents;}@RequiresApi(api = Build.VERSION_CODES.KITKAT)public static void saveXML(Context context, int type) {File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS + "/RedKey/language/");if (!file.exists()) {file.mkdirs();}BufferedWriter out = null;try {out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getAbsoluteFile() + "/" + "language_" + getLanguageName(type) + ".txt", true)));List<String> contents = makeContent(context, type);for (String content : contents) {out.write(content + "\n");}} catch (Exception e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}private static String getLanguageName(int type) {String languageName = "";switch (type) {case 0:languageName = "en";break;case 1:languageName = "ru";break;case 2:languageName = "de";break;case 3:languageName = "fr";break;case 4:languageName = "pl";break;}return languageName;}
}

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

  1. Android 读取excel (支持 xls和xlsx)

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

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

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

  3. android读取excel数据库,Android 读取Excel数据并保存在本地数据库

    在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...

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

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

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

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

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

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

  7. android 读取excel 文件

    在面对选择国家地区,选择手机号码区号等信息的时候,常常我们是读取已存好的数据,我现在读取的就是excel里面的数据,所以在此记录下读取的方法以及注意点. 下面就是读取国际地区手机区号的数据效果图: e ...

  8. android 读取excel表格数据(暂时只支持xls格式)

    需要的jar包:jxl public class ExcelUtils {private static List list = new ArrayList();private static Movie ...

  9. Android 解析Excel (xls格式)

    一,导入Jar包 二,ExcelBean public class ExcelBean {private String number;public String getNumber() {return ...

最新文章

  1. 关于ValueError: Unknown projection ‘3d‘报错的解决方法
  2. java中相同名字怎么声明,Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要他们的参数声明不同即可...
  3. 分布式缓存之Memcache
  4. Maven之自定义pom类型的基础项目
  5. python中表示空类型的是_python中怎么表示空值
  6. 电力装置的继电保护和自动装置设计规范_继电保护装置升级到微机保护装置
  7. 【笔记目录】南邮(通达)计算机专业基础
  8. for循环次数太多的时间优化_for循环关于对象长度优化思考
  9. [RMI TCP Connection(10.0.20.175:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for
  10. 如何用iframe代码显示调用网页的指定部分
  11. Fedora7安装后的配置
  12. Solidity 教程系列2 - 地址类型介绍
  13. Linux基础知识全面总结
  14. 计算机主板的接口结构名称10,[pc玩家]主板接口大盘点,细数历年主流的主板接口:内部接口...
  15. 前端和后端开发人员比例_前端和后端开发人员应该结交朋友
  16. 基于JSP实现医院病历管理系统,程序员如何在工作中自我增值
  17. Could not load the following font :pdfFontName : STSong-Light问题
  18. 【BZOJ】1665: [Usaco2006 Open]The Climbing Wall 攀岩(spfa)
  19. java excel 插入文件_Java 添加OLE对象到Excel文档
  20. Git —— SSH配置多仓库不同账户访问

热门文章

  1. SVM算法面试问题汇总
  2. Bundle与Intent机制,Intent显式/隐式意图,传递参数及参数序列化,各种跳转(如打开浏览器),Intent的Size
  3. 怎样通过几何画板中文版输入固定度数的角
  4. invalid use of incomplete type ‘class Ui ::Ccam_para_set‘的解决办法
  5. LabVIEW自适应屏幕分辨率缩放
  6. C#数据结构-前缀中缀后缀+中缀转后缀
  7. 三菱modbusRTU通讯实例_三菱PLC通讯编程实例
  8. WPS2010公测发布
  9. 毕业设计-基于微信小程序的员工培训系统
  10. 数据结构与算法基础(青岛大学-王卓)(4)