【最后的冲刺】android中excel表的导入和数据处理 ——学校课程的查询和修改

1.编写 The Class类把课程表courses.db当做一个实体类,hashcode和equals这两个类是为了判断输入的查询内容和Excel表中的内容是否一致。

并在java里面区别两个对象是否一致

 public class TheClass {
private String classname;
private String type;
private String teacher;
private String classroom;
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getClassroom() {
return classroom;
}
public void setClassroom(String classroom) {
this.classroom = classroom;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((classname == null) ? 0 : classname.hashCode());
result = prime * result
+ ((classroom == null) ? 0 : classroom.hashCode());
result = prime * result + ((teacher == null) ? 0 : teacher.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TheClass other = (TheClass) obj;
if (classname == null) {
if (other.classname != null)
return false;
} else if (!classname.equals(other.classname))
return false;
if (classroom == null) {
if (other.classroom != null)
return false;
} else if (!classroom.equals(other.classroom))
return false;
if (teacher == null) {
if (other.teacher != null)
return false;
} else if (!teacher.equals(other.teacher))
return false;
if (type == null) {
if (other.type != null)
return false;
} else if (!type.equals(other.type))
return false;
return true;
} }

这里必须注意的是hashset是个集合,必须两者是不同的,那么怎么进行区分呢,就是通过hashcode和equals这两个类

2.编写Readfile类,导入Excle的类进入sqlite

 public class ReadFile {

     public static boolean read2DB(File f, Context con) {
try {
Workbook course = null;
course = Workbook.getWorkbook(f);
Sheet sheet = course.getSheet(0);
HashSet<TheClass> subjects = new HashSet<TheClass>();
Cell cell = null;
for (int i = 1; i < sheet.getRows(); i++) {
TheClass tc = new TheClass();
cell = sheet.getCell(2, i);
tc.setClassname(cell.getContents());
cell = sheet.getCell(10, i);
tc.setType(cell.getContents());
cell = sheet.getCell(12, i);
tc.setTeacher(cell.getContents());
cell = sheet.getCell(18, i);
tc.setClassroom(cell.getContents());
System.out.println(tc.getClassname() + tc.getType()
+ tc.getTeacher() + tc.getClassroom());
subjects.add(tc);
}
SQLiteDatabase db = new SQLiteHelper(con, "courses.db")
.getWritableDatabase();
for (TheClass tc : subjects) {
ContentValues cv = new ContentValues();
cv.put("classname", tc.getClassname());
cv.put("type", tc.getType());
cv.put("teacher", tc.getTeacher());
cv.put("classroom", tc.getClassroom());
db.insert("table1", null, cv);
}
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
}

3.编写sqlite帮助类,通过它可以比较快的创建数据对象,创建表,删除表

 public class SQLiteHelper extends SQLiteOpenHelper {

     public SQLiteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public SQLiteHelper(Context con, String name){
this(con, name, null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table table1(classname varchar(20), type varchar(10), teacher varchar(20), classroom varchar(20))");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldv, int newv) {
// TODO Auto-generated method stub
db.execSQL("drop table if exists table1");
onCreate(db);
} }

4.编写主函数MainActivity,添加查询课程,老师,修改教室,老师等点击事件,还有刚开始加载Excel表的数据


 public class MainActivity extends Activity {

     private TextView hello;
private Button b1;
private EditText et;
// private Spinner sp;
private EditText et2;
private SQLiteDatabase db = null;
private TextView type;
private TextView classroom;
private Button editclassroom;
private Button del;
private String classname;
private String teachername;
private EditText edclassroom; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new SQLiteHelper(this, "courses.db").getWritableDatabase();
hello = (TextView) findViewById(R.id.hello);
b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
LayoutInflater li = LayoutInflater.from(MainActivity.this);
View view = li.inflate(R.layout.quer, null);
et = (EditText) view.findViewById(R.id.editText1);
// sp = (Spinner) findViewById(R.id.spinner1);
et2 = (EditText) view.findViewById(R.id.EditText01);
new AlertDialog.Builder(MainActivity.this)
.setTitle("查询")
.setView(view)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface arg0,
int arg1) {
classname = et.getText().toString();
teachername = et2.getText().toString();
if (null != classname
&& null != teachername) {
Cursor c = db
.rawQuery(
"select type,classroom from table1 where classname = ? and teacher = ? ",
new String[] {
classname,
teachername });
LayoutInflater li = LayoutInflater
.from(MainActivity.this);
View view = li.inflate(
R.layout.show, null);
type = (TextView) view
.findViewById(R.id.type);
classroom = (TextView) view
.findViewById(R.id.classroom);
editclassroom = (Button) view
.findViewById(R.id.button1);
del = (Button) view
.findViewById(R.id.button2);
c.moveToNext();
type.setText(c.getString(c
.getColumnIndex("type")));
classroom.setText(c.getString(c
.getColumnIndex("classroom"))); new AlertDialog.Builder(
MainActivity.this)
.setTitle("查询结果")
.setView(view)
.setPositiveButton("确定",
null).show();
editclassroom
.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(
View arg0) {
LayoutInflater li = LayoutInflater
.from(MainActivity.this);
View editview = li
.inflate(
R.layout.editclassroom,
null);
edclassroom = (EditText) editview
.findViewById(R.id.editText1);
new AlertDialog.Builder(
MainActivity.this)
.setTitle(
"新的教室:")
.setView(
editview)
.setPositiveButton(
"确定",
new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface arg0, int arg1) {
ContentValues cv = new ContentValues();
cv.put("classroom", edclassroom.getText().toString());
db.update("table1", cv, "classname = ? and teacher = ?",
new String[] {
classname,
teachername });
}
})
.setNegativeButton(
"取消",
null)
.show();
}
}); del.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
new AlertDialog.Builder(
MainActivity.this)
.setTitle("警告")
.setMessage(
"您正在删除记录,确定删除?")
.setPositiveButton(
"确定",
new DialogInterface.OnClickListener() { @Override
public void onClick(
DialogInterface arg0,
int arg1) {
db.delete(
"table1",
"classname = ? and teacher = ?",
new String[] {
classname,
teachername });
}
})
.setNegativeButton(
"取消", null)
.show();
}
}); }
} }).show();
}
});
File sdpath = Environment.getExternalStorageDirectory();
File coursefile = new File(sdpath + File.separator + "courses.xls");
if (!coursefile.exists()) {
new AlertDialog.Builder(this).setTitle("错误").setMessage("未找到文件")
.setPositiveButton("确定", null).show();
b1.setVisibility(View.INVISIBLE);
} else {
hello.setText("找到了文件!");
new Important().execute();
b1.setVisibility(View.VISIBLE);
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} class Important extends AsyncTask<Integer, String, Boolean> {
private ProgressDialog pDialog = null; @Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("正在导入课程,请稍候");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
} @Override
protected void onPostExecute(Boolean imp) {
// TODO Auto-generated method stub
super.onPostExecute(imp);
pDialog.dismiss();
String result = "";
if (imp == true) {
result = "读取成功!";
} else {
result = "读取失败!";
}
new AlertDialog.Builder(MainActivity.this).setTitle("提示")
.setMessage(result).setPositiveButton("确定", null).show(); } @Override
protected void onProgressUpdate(String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
} @Override
protected Boolean doInBackground(Integer... params) {
File sdpath = Environment.getExternalStorageDirectory();
File coursefile = new File(sdpath + File.separator + "courses.xls");
return ReadFile.read2DB(coursefile, MainActivity.this);
}
} }

5.总结一下


整个过程不是太难,不过要记得导入jxl.jar这个包,整体技术方面就是用到了安卓本身自带的Sqlite操作方法

【最后的冲刺】android中excel表的导入和数据处理的更多相关文章

  1. Excel表数据导入数据库表中

    ***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...

  2. Excel表数据导入Sql Server数据库中

    Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...

  3. VB中Excel 2010的导入导出操作

    VB中Excel 2010的导入导出操作 编写人:左丘文 2015-4-11 近来这已是第二篇在讨论VB的相关问题,今天在这里,我想与大家一起分享一下在VB中如何从Excel中导入数据和导出数据到Ex ...

  4. Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)

    有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...

  5. yii2 中excel表导出

    首先下载phpexcel 在引入类文件(在web中index.php入口文件或者控制器中引入) require_once dirname(dirname(__FILE__)).'/excel/PHPE ...

  6. python中Excel表操作

    python中关于excel表个的操作 使用 python中的xlwt和xlrd模块进行操作 # 2003之前:Excel:xls# 2003之后:Excel:xlsx# xlrd:读取的模块:xls ...

  7. oracle 两个网络不通的远程数据库如何将一个库中的表数据导入到另一个库中?

      1.情景展示 本地可以直接连接2个不同的远程数据库: 两个数据库由于网络不通,无法建立DBLINK完成数据传输: 将A库中C表的数据插入到B库中C表,如何快速实现? 2.解决方案 通过kettle ...

  8. laravel实现excel表的导入导出功能

    1.这是个我去公司之后曾经折磨我很久很久的功能查阅了很多资料但是功夫不负有心人在本人的不懈努力下还是实现了这个功能 (ps看不懂我下面说讲述的可以参考这个laravel学院的官方文档 https:// ...

  9. Java版将EXCEL表数据导入到数据库中

    1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls ...

随机推荐

  1. [BZOJ1455]罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 2285  Solved: 994[Submit][Status][Discuss] ...

  2. 关于ScrollView嵌套RecyclerView出现item显示不全的问题

    最近使用ScrollView时,发现里面嵌套Listview显示不全,试过重写Listview的onMeasure(),并没有起作用.然后将ListView换成RecyclerView后,高度还是显示 ...

  3. FZU-2219 StarCraft(贪心)

     Problem 2219 StarCraft Accept: 294    Submit: 860Time Limit: 1000 mSec    Memory Limit : 32768 KB   ...

  4. Jmeter进行webSocket接口测试

    一.运行Jmeter (1) 去官方网站下载jmeter(版本为3.3)并解压.点击bin/jmeter.bat启动jmeter (2)  新建线程组. (3) 在线程组中新建WebSocket Sa ...

  5. HDU 4815 Little Tiger vs. Deep Monkey 2013 长春现场赛C题

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815 [题意] n个题目,每题有各自的分数,A有50%的概率答对一道题目得到相应分数,B想要在至少P的概率 ...

  6. JNuit

    s1:@Test s2:根据提示导包 s3:选中方法名,右击run as -->JUnit Test package songyan.jdbc.learn1; import org.junit. ...

  7. Android中Context详解 ---- 你所不知道的Context(转)

    Android中Context详解 ---- 你所不知道的Context(转)                                               本文出处 :http://b ...

  8. Hadoop 2.2.0 Job源代码阅读笔记

    本文所有涉及的内容均为2.2.0版本中呈现. 概述: Job在创建Job并且提交的人的眼中,可以在创建的时候通过配置Job的内容,控制Job的执行,以及查询Job的运行状态.一旦Job提交以后,将不能 ...

  9. ElasticSearch5.5.2常用命令

    1.启动 转到elasticsearch-5.5.2\bin目录: 打开命令行输入:elasticsearch 2.ELasticsearch集群已经启动并且正常运行 curl http://127. ...

  10. ECSHOP生成缩略图模糊

    原因是因为ECSHOP生成缩略图时,用到的函数 imagejpeg()  没有设置质量参数.注释:质量参数为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大).如果没有设置质量参 ...