今天,简单讲讲android如何



读取excel数据并保存为xml文件。

最近,我这边需要把客户翻译的Excel字符资源作为xml字符资源,当时自己是一个一个的复制,发现效率太低。后来,在网上搜索了资料,发现可以读取Excel字符资源然后转成所需的xml资源,这里记录一下。

excel表格里面数据

1.准备工作

1.1 excel 表格
我在assets 下放的的excel 表

1.2 读取excel 需要的jar 包

这个在我的工程里有,大家可以去下载。

注意点:
assets 的目录不要建错,他是在main 级别目录下的,建错地方会读取不到文件。

2.相关代码

2.1 读取excel

    /**
     * 获取 excel 表格中的数据,不能在主线程中调用
     *
     * @param xlsName excel 表格的名称
     * @param index   第几张表格中的数据
     */
    private ArrayList<LanguageModel> getXlsData(String xlsName, int index) {
ArrayList<LanguageModel> countryList = new ArrayList<LanguageModel>();
        AssetManager assetManager = getAssets();

        try {
Workbook workbook = Workbook.getWorkbook(assetManager.open(xlsName));
            Sheet sheet = workbook.getSheet(index);

            int sheetNum = workbook.getNumberOfSheets();
            int sheetRows = sheet.getRows();
            int sheetColumns = sheet.getColumns();

            Log.e(TAG, "the num of sheets is " + sheetNum);
            Log.e(TAG, "the name of sheet is  " + sheet.getName());
            Log.e(TAG, "total rows is 行=" + sheetRows);
            Log.e(TAG, "total cols is 列=" + sheetColumns);

            for (int i = 750; i < sheetRows; i++) {
LanguageModel languageModel = new LanguageModel();
                languageModel.setKey(sheet.getCell(0, i).getContents());
                languageModel.setZh_value(sheet.getCell(1, i).getContents());
                languageModel.setEn_value(sheet.getCell(2, i).getContents());
                languageModel.setZhrTW_value(sheet.getCell(3, i).getContents());
                languageModel.setIt_value(sheet.getCell(5, i).getContents());
                languageModel.setDe_value(sheet.getCell(6, i).getContents());
                countryList.add(languageModel);
            }
//            Log.e(TAG," "+sheet.getCell(0, 0).getContents()+" "+sheet.getCell(1, 0).getContents()
//                    +" "+sheet.getCell(2, 0).getContents()+" "+sheet.getCell(3, 0).getContents()+" "
//                    +sheet.getCell(4, 0).getContents()+" "+sheet.getCell(5, 0).getContents()+" "
//                    +sheet.getCell(6, 0).getContents()+" ");

            workbook.close();
        } catch (Exception e) {
Log.e(TAG, "read error=" + e, e);
        }
return countryList;
    }
//在异步方法中 调用
    private class ExcelDataLoader extends AsyncTask<String, Void, ArrayList<LanguageModel>> {
@Override
        protected void onPreExecute() {
progressDialog.setMessage("加载中,请稍后......");
            progressDialog.setCanceledOnTouchOutside(false);
            progressDialog.show();
        }
@Override
        protected ArrayList<LanguageModel> doInBackground(String... params) {
return getXlsData(params[0], 0);
        }
@Override
        protected void onPostExecute(ArrayList<LanguageModel> languageModels) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
            }
if (languageModels != null && languageModels.size() > 0) {
//存在数据

                Log.e("languageModel", " languageModels.size()=" + languageModels.size());
//                <string name="app_name">P6SPro</string>
                StringBuffer languagexml = new StringBuffer();
                int size = languageModels.size();
                int m = size/50;
                for (int i = 0; i < size; i++) {
LanguageModel languageModel = languageModels.get(i);
                    languagexml.append("<string name=\""+languageModel.getKey()+"\">"+languageModel.getEn_value()+"</string>").append("\n");
//                    Log.e("languageModel", "i=" + i + "    <string name=\"" + languageModel.getKey() + "\">" + languageModel.getEn_value() + "</string>");

                }
Log.e("mylanguageModel",""+languagexml.toString());

            } else {
//加载失败

            }
}
}

说明
sheet.getCell(0, 1).getContents() 表示第1行第0列的数据,因为事先是知道excel 表中的内容的,所以行和列自己定义就好了。

2.2 相关调用

new ExcelDataLoader().execute("phone_country_info1.xls");

2.3 结果显示

这里需要注意一点:就是StringBuffer的拼接的长度最大时80行左右,多的会打印不出来,应该是app的内存不够。我使用的是每50行打印一次,然后复制后,再打印后面的50行,直到全部打印完成。

还有就是Excel文件必须保存为Excel2003,不然会报jxl.read.biff.BiffException: Unable to recognize OLE stream的错误。

出现这个异常是因为文件是Excel2007,而jxl解析07会报上述异常,也就是jxl可以处理Excel2003

方法:

打开文件,右上角文件另存为,选类型2003文 件,(还没试2003模版会怎样)

将导入的文件名改成现在的,试一下

这样就基本完成了。

下载地址:http://download.csdn.net/download/bzlj2912009596/10159401

android 读取excel数据并保存为xml文件就讲完了。

就这么简单



android 读取excel数据并保存为xml文件相关推荐

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

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

  2. java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...

    本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...

  3. 使用matlab读取excel数据并保存

    数据格式如下: 数据有M行,每行有4列,4列之间用","分开,每列中的数据用"%%"分开 提取这些数据并保存 数据文件内容如下: RawData.xlsx aa ...

  4. matlab2019b 读取excel数据并转换成.mat文件

    数据存储在excel中之后,打开matlab2019b,点击主页看见点击,进入页面 选择需要导入的数据,在导入下面的范围可以自己选择,我这里是A1-AG157,第一列第一个和最后一列最后一个就是范围. ...

  5. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  6. 读取Excel 数据并写入到Word示例

    读取Excel 数据并写入到Word示例 0x01 读取Excel 数据并写入到Word示例 1.1 配置pom.xml 1.2 配置 application.properties 1.3 自定义配置 ...

  7. Android实现Excel数据导入SQLlite,并用ListView展示。并且实现模糊查询

    Android实现Excel数据导入SQLlite,并用ListView展示.实现模糊查询 前言 今天朋友提出一个需求,有一个Excel表格,需要实现把每项数据展示出来,并且可以用某一项来进行查询筛选 ...

  8. java下载excel导入excel读取excel数据,将数据插入数据库

    10:如果你想导出excel表格,请链接:http://blog.csdn.net/xuanzhangran/article/details/54709221 导入的效果如下: 1:开始页面 2:点击 ...

  9. xlrd读取excel数据三个步骤

    xlrd读取excel数据的三个步骤如下: 安装xlrd库:在命令行中输入 pip install xlrd 安装xlrd库. 加载Excel文件:使用xlrd.open_workbook()函数加载 ...

最新文章

  1. margin:0 auto;不能居中的原因
  2. .net ef core 领域设计代码转换(上篇)
  3. 推土机:将JAXB对象映射到业务/域对象
  4. SQL中的事物【转】
  5. java队列实现限流,java中应对高并发的两种策略
  6. 2010-05-19 项目升级计划
  7. FastAPI基础:Depends怎么用?
  8. 计算机学风建设新闻稿,第十一届学风建设月动员大会新闻稿_
  9. 通俗易懂解释Docker是什么
  10. 二叉树no与n2关系数学证明
  11. kivy android wifi,Kivy / Buildozer VM Ubuntu不能连接到网络的问题解决
  12. 投放钻展要如何布局才能提升钻展推广的ROI
  13. if语句详解(c语言)
  14. uni-app,一段文字实现展开、收起全文点点点
  15. 百度:度娘换上时尚的比基尼亮瞎你的眼睛
  16. SYD8811 内存和代码的分布
  17. 联想笔记本重装win7系统之后无线不能用
  18. 抄码机器手持抄码器那个好用进口抄码机进口肉类冻品冷库牛羊肉抄码器
  19. STC 32位8051单片机来了
  20. 郑莉java课后答案,Java语言程序设计(郑莉)第三章课后习题答案

热门文章

  1. fastjson的@JSONField注解
  2. Oracle-计算岁数
  3. matlab 读取fig数据
  4. 如何选择开源许可证?(转)
  5. Python初识与简介【开篇】
  6. 微信小程序---setData
  7. STM32F0xx_SPI读写(Flash)配置详细过程
  8. oracle快速复制表数据
  9. 简单递推公式转换矩阵求解
  10. Android JNI开发生成.h头文件问题(转)