万能 Android 数据库导出Excal表代码
来源:互联网 发布:美工刀片厚 编辑:程序博客网 时间:2024/06/06 19:44
这是我遇到Android 需要将sqlite数据库导出Excal表时写万能操作Excal代码,这段代码将所有导出时所有操作都进行封装;只需传入相应要对Excal表的值就行 调用 databaseDump1.writesqlExcel(sql11,tablename,sheet,sheetTitle);第一个参数表示传过来的sql语句 第二个参数是excal表名 第三个参数是string数组表示每个表sheet分组名
import java.io.File;
import java.io.*;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class DatabaseDump {
private SQLiteDatabase mDb;
public DatabaseDump(SQLiteDatabase db) {
mDb = db;
}
/**
*
* 设置每个单元格的字体 居中 自动换行
*
* @param fontsize
* @return
*/
public WritableCellFormat setFont(int fontsize) {
WritableFont font1 = new WritableFont(WritableFont.TIMES, fontsize, WritableFont.BOLD);
WritableCellFormat writableCellFormat = new WritableCellFormat(font1);
try {
// 设置字体在单元格水平居中
writableCellFormat.setAlignment(Alignment.CENTRE);
// 设置字体在单元格垂直居中
writableCellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
// 设置字体在单元格自动换行
writableCellFormat.setWrap(true);
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return writableCellFormat;
}
/**
* 单个sql语句写入excal表
*
*/
public void writesqlExcel(String[] sql, String tablename, String[] sheet,String[] sheetTitle) {
/**
* 第一个参数表示传过来的sql语句 第二个参数是excal表名 第三个参数是string数组表示每个表sheet分组名
*/
WritableWorkbook wwb = null;
String fileName;
fileName = "/sdcard/Download/" + tablename + ".xls";
try {
// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < sql.length; i++) {
int r = 0;
Cursor cur = mDb.rawQuery(sql[i], 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(sheet[i], i);
switch (i) {
case 0:
writeexcal(ws,numcols,numrows,records,sheetTitle[0]);
break;
case 1:
writeexcal(ws,numcols,numrows,records,sheetTitle[1]);
break;
case 2:
writeexcal(ws,numcols,numrows,records,sheetTitle[2]);
break;
}
}
}
try {
// 从内存中写入文件中
wwb.write();
// 关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
/**
* 写入exaca表
*
*/
public void writeexcal(WritableSheet ws,int numcols,int numrows,String records[][],String sheetTitle){
// 下面开始添加单元格
for (int i1 = 0; i1 < numrows + 2; i1++) {
for (int j = 0; j < numcols; j++) {
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
if (i1 == 0) {
try {
ws.mergeCells(0, 0, numcols, 0);
WritableCellFormat writableCellFormat = setFont(16);
Label labelC = new Label(0, 0,sheetTitle, writableCellFormat);
ws.addCell(labelC);
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
WritableCellFormat writableCellFormat = setFont(8);
Label labelC = new Label(j, i1, records[i1 - 1][j], writableCellFormat);
// Log.i("Newvalue" + i + " " + j, records[i][j]);
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
}
}
例如:
DatabaseDump databaseDump1=new DatabaseDump(db1);//这的db1是SQLiteDatabase db1,也就是你要操作的数据库的SQLiteDatabase
//String[] sql, String tablename, String[] sheet,String[] sheetTitle
String sql11[]=new String[]{"select * from person","select * from person","select * from person"};
String tablename="student";
String[] sheet=new String[]{"person1","person2","person3"};
String[] sheetTitle=new String[]{"我是好孩子","我不是好孩子","我就是好孩子"};
databaseDump1.writesqlExcel(sql11,tablename,sheet,sheetTitle);
import java.io.File;
import java.io.*;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class DatabaseDump {
private SQLiteDatabase mDb;
public DatabaseDump(SQLiteDatabase db) {
mDb = db;
}
/**
*
* 设置每个单元格的字体 居中 自动换行
*
* @param fontsize
* @return
*/
public WritableCellFormat setFont(int fontsize) {
WritableFont font1 = new WritableFont(WritableFont.TIMES, fontsize, WritableFont.BOLD);
WritableCellFormat writableCellFormat = new WritableCellFormat(font1);
try {
// 设置字体在单元格水平居中
writableCellFormat.setAlignment(Alignment.CENTRE);
// 设置字体在单元格垂直居中
writableCellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
// 设置字体在单元格自动换行
writableCellFormat.setWrap(true);
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return writableCellFormat;
}
/**
* 单个sql语句写入excal表
*
*/
public void writesqlExcel(String[] sql, String tablename, String[] sheet,String[] sheetTitle) {
/**
* 第一个参数表示传过来的sql语句 第二个参数是excal表名 第三个参数是string数组表示每个表sheet分组名
*/
WritableWorkbook wwb = null;
String fileName;
fileName = "/sdcard/Download/" + tablename + ".xls";
try {
// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < sql.length; i++) {
int r = 0;
Cursor cur = mDb.rawQuery(sql[i], 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(sheet[i], i);
switch (i) {
case 0:
writeexcal(ws,numcols,numrows,records,sheetTitle[0]);
break;
case 1:
writeexcal(ws,numcols,numrows,records,sheetTitle[1]);
break;
case 2:
writeexcal(ws,numcols,numrows,records,sheetTitle[2]);
break;
}
}
}
try {
// 从内存中写入文件中
wwb.write();
// 关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
/**
* 写入exaca表
*
*/
public void writeexcal(WritableSheet ws,int numcols,int numrows,String records[][],String sheetTitle){
// 下面开始添加单元格
for (int i1 = 0; i1 < numrows + 2; i1++) {
for (int j = 0; j < numcols; j++) {
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
if (i1 == 0) {
try {
ws.mergeCells(0, 0, numcols, 0);
WritableCellFormat writableCellFormat = setFont(16);
Label labelC = new Label(0, 0,sheetTitle, writableCellFormat);
ws.addCell(labelC);
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
WritableCellFormat writableCellFormat = setFont(8);
Label labelC = new Label(j, i1, records[i1 - 1][j], writableCellFormat);
// Log.i("Newvalue" + i + " " + j, records[i][j]);
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
}
}
}
Android 操作Excal表所需要的包
0 0
- 万能 Android 数据库导出Excal表代码
- C#导出Excal表
- 从数据库导出到excal(winform)
- EXCAL导入数据库 C#
- 从excal倒入到数据库
- .net core npoi 将excal 导入数据库
- petapoco writetoserver excal批量添加数据库
- vue中excal表格的导入和导出
- 万能数据导出Excel
- android 数据库关系表导出xml文件
- Android SQLite数据库导出Excel表
- android 数据库导入导出
- 导出Android应用程序数据库。
- Android导出应用数据库
- binbinyang---Android 导出---数据库
- Android导出应用数据库
- 一段导出数据库的代码
- 使用java代码导出数据库
- 剑指Offer_52_正则表达式匹配
- 搜狐 自媒体 快站
- <<Android开发艺术探索>>读书笔记--Activity LaunchMode
- Android 监听应用的卸载与安装
- .net下的面向工控领域的远程方法调用(RMI)中间件,通信层实现
- 万能 Android 数据库导出Excal表代码
- 跟我一起写MakeFile
- org 07c00h的原因
- wav头文件格式
- C语言文件的输入/输出
- MySQL数据库
- ECMAScript 6 入门简介
- org 0x7c00解疑
- opendir,readir对目录的操作+原创测试代码