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

在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下:

da3b9d164510?from=timeline@

图片.png

需要做以下准备:

读取Excel的jar包【文章末尾会分享该jar包】

保存数据的数据库框架,在这里我们使用GreenDao3.0来做数据保存

接下来我们开始一步步实现Excel数据的 读取和保存

先将GeenDao的准备工作做好

1.需要在工程(Project)的build.gradle中添加依赖

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.3.3'

//GreeDao依赖

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'

}

}

2.在项目(Module)的build.gradle中添加依赖

//GreenDao自动生成类插件

apply plugin: 'org.greenrobot.greendao'

android {

...

buildTypes {

...

//GreenDao配置

greendao {

//数据库版本

schemaVersion 2

}

}

}

dependencies {

...

//GreenDao依赖

compile 'org.greenrobot:greendao:3.2.2'

}

3.创建一个Bean用来作为数据库表名[类名]字段名[对象名]

@Entity

public class Country extends BaseBean {

/**

* ID必须指明 类型必须是Long或long

*/

@Id

private long id;

private String areaCode;

private String subName;

private String nameCn;

private String nameEn;

private String capitalCn;

private String capitalEn;

做完以上操作再Make Project一下也就是ctrl+F9一下 也就是点一下启动项目前面的那个小锤锤[studio2.3.3],就可以看到GreenDao已经给我们自动生成了Country 对象的get set方法和几个操作数据库的类。

da3b9d164510?from=timeline@

图片.png

4.创建数据库和数据库操作类

/**

* 数据库操作类

*/

public class DaoManager {

private DaoMaster mDaoMaster;

private DaoSession mDaoSession;

private DaoManager() {

init();

}

/**

* 静态内部类,实例化对象使用

*/

private static class SingleInstanceHolder {

private static final DaoManager INSTANCE = new DaoManager();

}

/**

* 对外唯一实例的接口

*

* @return

*/

public static DaoManager getInstance() {

return SingleInstanceHolder.INSTANCE;

}

/**

* 初始化数据

*/

private void init() {

DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(ExcelApplication.getContext(), "DataBaseName");

mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());

mDaoSession = mDaoMaster.newSession();

}

public DaoMaster getDaoMaster() {

return mDaoMaster;

}

public DaoSession getDaoSession() {

return mDaoSession;

}

}

/**

* 数据库表操作类

*/

public class CountryDaoUtils {

/**

* 单条插入

*

* @param country country

*/

public static void inserCountry(Country country) {

DaoManager.getInstance().getDaoSession()

.insertOrReplace(country);

}

/**

* 批量增加

*/

public static void inserCountryList(List country) {

DaoManager.getInstance().getDaoSession()

.getCountryDao()

.insertOrReplaceInTx(country);

}

/**

* 根据ID删除

*

* @param id id

*/

public static void deleteCountry(long id) {

DaoManager.getInstance().getDaoSession()

.getCountryDao()

.deleteByKey(id);

}

/**

* 查询所有

*

* @return List

*/

public static List queryAllCountry() {

return DaoManager.getInstance().getDaoSession().loadAll(Country.class);

}

/**

* 按条件查询

*

* @param areaCode 国家码

* @return List

*/

public static List queryByAreaCode(String areaCode) {

return DaoManager.getInstance().getDaoSession()

.queryBuilder(Country.class)

.where(CountryDao.Properties.AreaCode.eq(areaCode))

.list();

}

}

关于GreenDao的准备工作就做完了,GreenDao的具体详细操作可参考这里,在这就不过多介绍了。

接下来就是读取Excel的操作了,很简单,仅仅三步就够了

1.导入jar包

da3b9d164510?from=timeline@

图片.png

2.将准备好的Excel文件放在asset文件夹下

da3b9d164510?from=timeline@

图片.png

3.读取Excel文件并写入数据库

/**

* 读取Excel数据

*

* @return List

*/

private static List readExcel() {

List countryList = new ArrayList<>();

try {

InputStream is = ExcelApplication.getContext().getAssets().open("country_information.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 id = (sheet.getCell(0, i)).getContents();

String areaCode = (sheet.getCell(1, i)).getContents();

String subName = (sheet.getCell(2, i)).getContents();

String nameCn = (sheet.getCell(3, i)).getContents();

String nameEn = (sheet.getCell(4, i)).getContents();

String capitalCn = (sheet.getCell(5, i)).getContents();

String capitalEn = (sheet.getCell(6, i)).getContents();

countryList.add(new Country(Long.valueOf(id), areaCode, subName, nameCn, nameEn, capitalCn, capitalEn));

}

book.close();

} catch (Exception e) {

e.printStackTrace();

}

return countryList;

}

最后一点,别忘了配置权限

忘了说一点,读取的Excel一定是97-2003的.xls文件,如果非此版本,需要另存为该版本再来读取,否则读取会异常和报错,

最后读取Excel的Jar包下载地址,提取密码:nibf,希望该文章能帮助到需要的人,共同学习。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值