0基础用android做一个Excel表查询器(2):编写程序
编完页面下面就该开始写程序了,首先确定一下思路,很简单,将Excel表写入一个List(或数组)里,然后获取Plain Text中写入的内容,然后与List里的内容进行比对,发现包含关系就输出。
首先是控件程序的编写,编写页面时候每个控件都有一个id,我写的是tv_text和tv_answer1,命名当然是随便了,不过一般会命名为tv 后面跟上具体想实现的功能,首先在程序中对控件进行调用`
question = findViewById(R.id.tv_text);
answer = findViewById(R.id.tv_answer1);
然后你如果需要读取输入的内容,就
question.getText();
而要写内容,就
answer.setText();
好,既然这些都完成了,剩下就读Excel就完了
首先安装jar包,主要用到的就是poi包,安装jar包主有两种方法,第一种就是网上直接下载,然后拖到libs下,然后点击右上角的Project Structure
然后点Dependencies,加号下的Jar Dependency然后加入你的包即可
另一种就是直接点Library Dependency然后查询你要的库(只能全名查找)
载入库后我们开始编写函数,直接new class,写好类名和函数名。
主要用到的是这些函数。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
第一步就是建一个文件流,说实在的在这走了很多弯路,因为之前没用过java。
FileInputStream input = new FileInputStream(new File("/storage/emulated/0/1/data.xls"));
其中/storage/emulated/0代表手机内存。
建完后新建workbook,其中xlsx是XSSF,xls是HSSF。
getSheet指Excel表的sheet几,从0开始,如果有多个sheet就getNumberOfSheets然后再for一下。
HSSFWorkbook wb = null;
wb = new HSSFWorkbook(input);
HSSFSheet hssfSheet = wb.getSheetAt(0);
之后就是两个for读数据
for (int rowNum =0; rowNum <=hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
int minColIx = hssfRow.getFirstCellNum();
int maxColIx = hssfRow.getLastCellNum();
for (int colIx = minColIx; colIx < maxColIx; colIx++) {
HSSFCell cell = hssfRow.getCell(colIx);
if (cell!= null) {
cell.setCellType(Cell.CELL_TYPE_STRING);
String content = cell.getStringCellValue();
cell转String的话也可以直接.toString,然后将数据存到List中就行了,之后就是调用函数以及判断,判断包含关系可以用contains,然后就可以将整行输出,
结果如下(这里网上随便找了一个题库举例):