Android 读取excel(支持 xls)和 xml

这篇具有很好参考价值的文章主要介绍了Android 读取excel(支持 xls)和 xml。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、使用jxl 读取excel文件

1.build.gradle的dependencies中加入 

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

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

android 读取excel,android,excel,xml

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 = APP
                        if (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工具类:文章来源地址https://www.toymoban.com/news/detail-641769.html

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 = APP
                        if (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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android:生成XML文件

    [Student{clazz=\\\'j2307\\\',name=\\\'张三丰\\\',sex=\\\'男\\\',age=\\\'25\\\'},Student{clazz=\\\'j2307\\\'\\\',name=\\\'周芷若\\\',sex=\\\'女\\\',age=\\\'23\\\'}]   ListStudent students =new ArrayList();  // 创建xml文件     public void createXML(View view){         //判断要生成的数据是否存在         if(students != null students.size() 0){             try {        

    2024年02月16日
    浏览(38)
  • [Android] AndroidManifest.xml 详解

    https://www.cnblogs.com/shujk/p/14961572.html AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。 一、概述: AndroidManifest.xml是Android应用的入口文件,它描述了package中暴

    2024年02月09日
    浏览(34)
  • 【Android】将图片转为xml文件

    一、为什么要将图片转为xml文件 为了使图片放大不失真并且体积小易调用。普通的图片在不同的手机上放大可能会变得模糊,而svg格式的矢量图放大而不失真,也就是图片是用代码绘制的。新Android API也支持了矢量图,称为 Android VectorDrawable,在drawable中的一些xml文件中进行绘

    2024年02月13日
    浏览(62)
  • Android Studio升级到Android API 33版本后,XML布局输入没有提示

      低版本的Android Studio升级到Android API 33版本后,XML布局输入没有提示。查一下我目前使用的Android Studio 是2021年发布,而Android API 33是2022年发布的,这是由低版本升级到高版本造成不兼容的问题。解决方法有两种: 第一种方法: 降低compileSdk的版本,但每次新建项目都要修改

    2024年02月10日
    浏览(72)
  • Android strings.xml按照key修改

    将两个Android项目中的多语言字符串文件(strings.xml)进行比较,如果其中一个项目中包含另一个项目没有的字符,则合并到单一的输出文件,并以 key 在原始 XML 文件中更新 value 值。如果key匹配不准确则忽略它。 具体来说: 引入 re, xml.etree.ElementTree 和 argparse 模块。 定义命令

    2024年02月07日
    浏览(41)
  • Android 屏幕适配资源xml的配置方法

    在 Android 中进行屏幕适配是确保应用在不同设备上正常显示的重要步骤之一。资源文件夹的配置是实现屏幕适配的关键之一,以下是一些常见的资源文件夹配置方法,以适应不同屏幕尺寸和密度。 不同屏幕尺寸的适配: res/layout :通常存放默认的布局文件。 res/layout-sw600dp :

    2024年02月12日
    浏览(39)
  • 【Android学习】Android studio环境搭建-解决下载gradle慢&加载mainfest.xml慢的问题

    转载:https://blog.csdn.net/qq_31881469/article/details/78646406/ 目录 1、解决网络连接问题 (1)问题描述  (2)方法步骤  2、解决内存吃紧问题  (1)问题描述  (2)方法步骤  3、解决构建速度慢问题  (1)问题描述  (2)方法            检查你的 Android SDK,卡上很长时间,

    2024年02月14日
    浏览(43)
  • Android:ImageView xml方式配置selector 图片切换

    1、在 res/drawable 目录下创建一个新的XML文件,比如 selector_image.xml ?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"? selector xmlns:android=\\\"http://schemas.android.com/apk/res/android\\\" !-- 背景选择器 state_pressed  按下 state_focused 获得焦点 默认 图片 --     item android:state_pressed=\\\"true\\\" android:drawable=\\\"@drawable/image_pressed\\\"

    2024年02月15日
    浏览(47)
  • Android Studio: AndroidManifest.xml:11: AAPT: error: attribute android:dataExtractionRules not found

    Android Studio: AndroidManifest.xml:11: AAPT: error: attribute android:dataExtractionRules not found. flyfish 错误如图 打开AndroidManifest.xml文件 删除 dataExtractionRules 这句

    2024年02月12日
    浏览(54)
  • Android Studio xml文件代码自动提示失效/Android Studio 代码不自动提示/怎样设置才能不手动敲Android Studio 代码

    下图为我成功解决Android不自动提示代码之后的样子(这个过程耗时两天,把相关博客都看了一遍,尝试了各种各样的方法都没有解决。但是用这个方法的话几分钟就解决掉了) 我的电脑一直都是很奇怪的状态,因为用别的软件也总是会出现各种bug,但解决这个问题找到合适

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包