Android 读取excel(支持 xls)和 xml
一、使用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相关推荐
- Android 读取excel (支持 xls和xlsx)
最近公司项目需要Android应用读取excel文件内容,所以就找了相关资料,找到两种读取excel文件的方法,下面为大家介绍: 一.jxl 读取excel文件 1.1.添加依赖: implement ...
- android 读取excel数据并保存为xml文件
今天,简单讲讲android如何 读取excel数据并保存为xml文件. 最近,我这边需要把客户翻译的Excel字符资源作为xml字符资源,当时自己是一个一个的复制,发现效率太低.后来,在网上搜 ...
- android读取excel数据库,Android 读取Excel数据并保存在本地数据库
在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...
- android读取excel文件_python里读写excel等数据文件的几种常用方式
python处理数据文件第一步是要读取数据,文件类型主要包括文本文件(csv.txt等).excel文件.数据库文件.api等. 下面整理下python有哪些方式可以读取数据文件. 1. python ...
- android excel 筛选功能,Android 实现 Excel 解析 xls 和 xlsx,方法也可以很简单
Excel 解析,一般来说是在服务端进行的,但是如果移动端要实现解析Excel的功能,那也是有实现的方法的. 不过由于Android 原生用Java/Kotlin实现,所以也可以参考服务端解析Exce ...
- java读取excel 支持所有版本
springmvc 写的一个小例子 读取excel里的数据 并且保存 需要的jar包 为dom4j-1.6.1.jar poi-3.9-20121203.jar poi-example ...
- android 读取excel 文件
在面对选择国家地区,选择手机号码区号等信息的时候,常常我们是读取已存好的数据,我现在读取的就是excel里面的数据,所以在此记录下读取的方法以及注意点. 下面就是读取国际地区手机区号的数据效果图: e ...
- android 读取excel表格数据(暂时只支持xls格式)
需要的jar包:jxl public class ExcelUtils {private static List list = new ArrayList();private static Movie ...
- Android 解析Excel (xls格式)
一,导入Jar包 二,ExcelBean public class ExcelBean {private String number;public String getNumber() {return ...
最新文章
- 关于ValueError: Unknown projection ‘3d‘报错的解决方法
- java中相同名字怎么声明,Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要他们的参数声明不同即可...
- 分布式缓存之Memcache
- Maven之自定义pom类型的基础项目
- python中表示空类型的是_python中怎么表示空值
- 电力装置的继电保护和自动装置设计规范_继电保护装置升级到微机保护装置
- 【笔记目录】南邮(通达)计算机专业基础
- for循环次数太多的时间优化_for循环关于对象长度优化思考
- [RMI TCP Connection(10.0.20.175:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for
- 如何用iframe代码显示调用网页的指定部分
- Fedora7安装后的配置
- Solidity 教程系列2 - 地址类型介绍
- Linux基础知识全面总结
- 计算机主板的接口结构名称10,[pc玩家]主板接口大盘点,细数历年主流的主板接口:内部接口...
- 前端和后端开发人员比例_前端和后端开发人员应该结交朋友
- 基于JSP实现医院病历管理系统,程序员如何在工作中自我增值
- Could not load the following font :pdfFontName : STSong-Light问题
- 【BZOJ】1665: [Usaco2006 Open]The Climbing Wall 攀岩(spfa)
- java excel 插入文件_Java 添加OLE对象到Excel文档
- Git —— SSH配置多仓库不同账户访问
热门文章
- SVM算法面试问题汇总
- Bundle与Intent机制,Intent显式/隐式意图,传递参数及参数序列化,各种跳转(如打开浏览器),Intent的Size
- 怎样通过几何画板中文版输入固定度数的角
- invalid use of incomplete type ‘class Ui ::Ccam_para_set‘的解决办法
- LabVIEW自适应屏幕分辨率缩放
- C#数据结构-前缀中缀后缀+中缀转后缀
- 三菱modbusRTU通讯实例_三菱PLC通讯编程实例
- WPS2010公测发布
- 毕业设计-基于微信小程序的员工培训系统
- 数据结构与算法基础(青岛大学-王卓)(4)