二、简单刷题APP(题库是Excel)之实现文件管理器添加题库

接着上一篇的思路一、简单刷题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包,可以网上下载,在此就不提供了,目录如下:
jxl.jar包目录

嗯,通过调用本地文件管理器添加Excel表格并解析文件,将数据插入数据完成了。还是那句话,如有不妥之处,欢迎指教。

三、简单刷题APP(题库是Excel)之在APP添加题目
四、简单刷题APP(题库是Excel)之单选和多选的跳转

欢迎加群学习交流~
在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值