java导出mysql中的表格数据类型_java将数据库内容生成Excel表

今天做了一个关于Java生成Excel表的功能

有两种方式:1、jxl.jar 2、poi-3.7-20101029.jar

第一个不算太了解,第二个是出自apache的标准,虽然我两个都使用了,但比较偏向第二个;

就功能性而言,第一个比较灵活,但结构略简单,无法从数据库中大规模的生成(或者是我不知道);第二个比较全面,但太过庞大

第一个代码:

// 打开文件

WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));

// 生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet = book.createSheet("第一页" , 0 );

// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

// 以及单元格内容为test

Label label = new Label( 0 , 0 , "test" );

// 将定义好的单元格添加到工作表中

sheet.addCell(label);

/**/

/*

* 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123

*/

jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );

sheet.addCell(number);

// 写入数据并关闭文件

book.write();

book.close();

第二个代码:

Connection conn = null;

Class.forName("com.mysql.jdbc.Driver");

conn = (Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","1234");

// 11:创建一个excel

HSSFWorkbook book = new HSSFWorkbook();

// 1:分析数据

java.sql.DatabaseMetaData dmd = conn.getMetaData();

// 2:获取所有表名

java.sql.ResultSet rs = dmd.getTables("", "TEST", "STUDENTS",

new String[] {"TABLE"});

List tables = new ArrayList();

while (rs.next()) {

String tn = rs.getString("TABLE_NAME");

tables.add(tn);

}

int table_len = tables.size();

// 3:声明st

Statement st = conn.createStatement();

int idx = 0;

for (String tn : tables) {

System.err.println("表:" + tn);

idx++;

System.err.println("-------正在导----" + idx + "/" + table_len);

// 12:创建sheet

HSSFSheet sheet = book.createSheet(tn);

String sql = "select * from " + tn;

rs = st.executeQuery(sql);

// 3:rsmd

ResultSetMetaData rsmd = (ResultSetMetaData)rs.getMetaData();

// 4:分析一共多少列

int cols = rsmd.getColumnCount();

// 13:创建表头

HSSFRow row = sheet.createRow(0);

for (int i = 0; i < cols; i++) {

String cname = rsmd.getColumnName(i + 1);

HSSFCell cell = row.createCell(i);

cell.setCellValue(cname);

// System.err.print("\t"+cname);

}

// System.err.println("\n");

// 显示数据

while (rs.next()) {

// 14:保存数据

row = sheet.createRow(sheet.getLastRowNum() + 1);

for (int i = 0; i < cols; i++) {

HSSFCell cell = row.createCell(i);

cell.setCellValue(rs.getString(i + 1));

// System.err.print("\t"+rs.getString(i+1));

}

// System.err.println("\n");

}

// System.err.println("\n-------------------");

}

book.write(new FileOutputStream("d:/aa.xls"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值