接着上一篇的思路一、简单刷题APP(题库是Excel)之项目功能和效果图,这里先介绍调用文件管理器,并将Excel表格的数据解析出来,存放到数据库中。(不要问我为什么要这么麻烦,因为我只想到这样做,哈哈。)
###调用文件管理器
关于如何调用文件管理器,网上有很多,我也是从网上看到的做法,其实也很简单。这里就不详细介绍了,这是网上找到的其中一个网址
http://www.bkjia.com/Androidjc/1075240.html
在这就详细讲一下文件管理器回调后将Excel表格的数据解析并添加进数据库中的方法。
文件管理器的回调
//文件管理器的回调
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {//是否选择,没选择就不会继续
if (requestCode == 1) {
Uri uri = data.getData();
// Toast.makeText(this, "文件路径:"+uri.getPath().toString(), Toast.LENGTH_SHORT).show();
try {
//数据库的创建
MyOpenHelper oh = new MyOpenHelper(this);
SQLiteDatabase db = oh.getWritableDatabase();
//开启事务,保证sql语句要么执行,要么全不执行
db.beginTransaction();
//获取所选文件的路径
String PATH = uri.getPath().toString();
InputStream is = new FileInputStream(PATH);
//将Excel表格的数据解析出来
Workbook book = Workbook.getWorkbook(is);
int num = book.getNumberOfSheets();
Sheet sheet = book.getSheet(0); //获得第一个工作表对象
int Rows = sheet.getRows(); //表格的行数
int Cols = sheet.getColumns(); //表格的列数
System.out.println("Rows" + Rows + ";"+ "Cols" + Cols);
//将数据一条一条的存入数据库中
for (int i = 1; i < Rows; i++) {
ContentValues values = new ContentValues();
String titleString = sheet.getCell(0,i).getContents();
//如果题目不为空,就将数据存入数据库中
if(!titleString.equals("")){
values.put("title",titleString); //题目
String optionAString = sheet.getCell(1,i).getContents();
values.put("optionA", "A:"+optionAString); //选项A
String optionBString = sheet.getCell(2,i).getContents();
values.put("optionB", "B:"+optionBString); //选项B
String optionCString = sheet.getCell(3,i).getContents();
//有两个选项的题目
if(optionCString.equals("")){
values.put("optionC", "");
values.put("optionD", "");
}
else{
values.put("optionC", "C:"+optionCString); //选项C
String optionDString = sheet.getCell(4,i).getContents();
values.put("optionD", "D:"+optionDString); //选项D
}
String rightString = sheet.getCell(5,i).getContents();
values.put("rightAnswer", rightString); //正确答案
String jiexiString = sheet.getCell(6,i).getContents();
values.put("jiexi", jiexiString); //解析
db.insert("xiti", null,values ); //将数据插入xiti表中
}
else {
break; //题目为空,跳出循环
}
}
book.close();
is.close();
Toast.makeText(MainActivity.this, "刷新成功!",Toast.LENGTH_SHORT).show();
db.setTransactionSuccessful(); //设置 事务执行成功
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "请选择excle文件!",Toast.LENGTH_SHORT).show();
}
finally{
//关闭事务,同时提交,如果已经设置事务执行成功,那么Sql语句生效,反之数据不变
db.endTransaction();
}
}
}
}
注意在解析Excel表格时要导入jxl.jar包,可以网上下载,在此就不提供了,目录如下:
嗯,通过调用本地文件管理器添加Excel表格并解析文件,将数据插入数据完成了。还是那句话,如有不妥之处,欢迎指教。
三、简单刷题APP(题库是Excel)之在APP添加题目
四、简单刷题APP(题库是Excel)之单选和多选的跳转
欢迎加群学习交流~