设为首页 收藏本站
查看: 825|回复: 0

[经验分享] 将SQLite中的数据转换为Excel表

[复制链接]

尚未签到

发表于 2016-12-1 07:47:24 | 显示全部楼层 |阅读模式
  此程序能将指定SQlite数据库中的数据转换为Excel表格形式
  package zhaoxing.android.tool;import java.io.File;import java.io.IOException;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class DatabaseDump {private String mDestXmlFilename;private SQLiteDatabase mDb;public DatabaseDump(SQLiteDatabase db, String destXml) {mDb = db;mDestXmlFilename = destXml;}public void exportData() {try {//Log.i("mdb", mDb.getPath());// get the tables out of the given sqlite databaseString sql = "SELECT * FROM sqlite_master";Cursor cur = mDb.rawQuery(sql, new String[0]);cur.moveToFirst();String tableName;while (cur.getPosition() < cur.getCount()) {tableName = cur.getString(cur.getColumnIndex("name"));// don't process these two tables since they are used// for metadataif (!tableName.equals("android_metadata")&& !tableName.equals("sqlite_sequence")) {writeExcel(tableName);}cur.moveToNext();}} catch (Exception e) {e.printStackTrace();}}/*** 生成一个Excel文件* * @param fileName*            要生成的Excel文件名*/public void writeExcel(String tableName) {WritableWorkbook wwb = null;String fileName;fileName = "/sdcard/QuestionData/" + tableName + ".xls";int r = 0;String sql = "select * from " + tableName;Cursor cur = mDb.rawQuery(sql, new String[0]);int numcols = cur.getColumnCount();int numrows = cur.getCount();// Log.i("row", numrows + "");// Log.i("col", numcols + "");String records[][] = new String[numrows + 1][numcols];// 存放答案,多一行标题行if (cur.moveToFirst()) {while (cur.getPosition() < cur.getCount()) {for (int c = 0; c < numcols; c++) {if (r == 0) {records[r][c] = cur.getColumnName(c);records[r + 1][c] = cur.getString(c);} else {records[r + 1][c] = cur.getString(c);}//Log.i("value" + r + " " + c, records[r][c]);}cur.moveToNext();r++;}cur.close();}try {// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象wwb = Workbook.createWorkbook(new File(fileName));} catch (IOException e) {e.printStackTrace();}if (wwb != null) {// 创建一个可写入的工作表// Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置WritableSheet ws = wwb.createSheet("sheet1", 0);// 下面开始添加单元格for (int i = 0; i < numrows + 1; i++) {for (int j = 0; j < numcols; j++) {// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行Label labelC = new Label(j, i, records[j]);//Log.i("Newvalue" + i + " " + j, records[j]);try {// 将生成的单元格添加到工作表中ws.addCell(labelC);} catch (RowsExceededException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}}}try {// 从内存中写入文件中wwb.write();// 关闭资源,释放内存wwb.close();} catch (IOException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}}}}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307844-1-1.html 上篇帖子: Android操作嵌入式关系型SQLite数据库 下篇帖子: 22、从头学Android之Android的数据存储--SQLite
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表