从数据库导出数据到Excel表(jxl.jar)

package com.*****.query;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import jxl.*;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;

/**
* 对Excel表进行操作
*
* @author ********
*
*/
public class ExcelUtil {
private static Log log = LogFactory.getLog(ExcelUtil.class);

public boolean DB2Excel(ResultSet rs,OutputStream os) {
boolean flag = false;
WritableWorkbook workbook = null;
WritableSheet sheet = null;
Label label = null;

// 创建Excel表
try {
// workbook = Workbook.createWorkbook(new File("d:/output.xls"));
workbook = Workbook.createWorkbook(os);
// 创建Excel表中的sheet
sheet = workbook.createSheet("First Sheet", 0);

// 定义表中的数据
// Label label = new Label(0, 0, "k k 中国人*");
// Label label1 = new Label(0, 1, "A label record");
// Label label3 = new Label(0, 2, "3.14159");
// Number number = new Number(1, 1, 3.1459);

// 向Excel中添加数据

ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
String colName = null;
int row = 0;
// 添加标题
for (int i = 0; i < columnCount; i++) {
colName = rsmd.getColumnName(i + 1);
label = new Label(i, row, colName);
// log.info("标题:"+i+"---"+row +"---"+ colName);
sheet.addCell(label);
}
row++;
log.info("写入标题成功");
while (rs.next()) {
for (int i = 0; i < columnCount; i++) {
label = new Label(i, row, rs.getString(i+1));
// log.info("行:"+i+"---"+row +"---"+ rs.getString(i+1));
sheet.addCell(label);
}
row++;
}
log.info("写入内容成功");

// 关闭文件
workbook.write();
workbook.close();
log.info("数据成功写入Excel");
flag = true;
} catch (SQLException e) {
log.info(e.getMessage());
} catch (RowsExceededException e) {
log.info(e.getMessage());
} catch (WriteException e) {
log.info(e.getMessage());
} catch (IOException e) {
log.info(e.getMessage());
} finally{
try {
workbook.close();
} catch (Exception e) {
}
}
return flag;
}

public static void main(String[] args) {
try {

Class.forName("net.sourceforge.jtds.jdbc.Driver");
Connection con = DriverManager
.getConnection(
"jdbc:jtds:sqlserver://localhost:1433/abc",
"sa", "sa");
Statement st = con.createStatement();
ResultSet rs = st
.executeQuery("select * from abc.dbo.sss");
// if (!new ExcelUtil().DB2Excel(rs)){
// log.info("数据写入失败");
// }
rs.close();
st.close();
con.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}


在servlet中的使用

// 写入EXCEL
if (action != null &&amp; action.startsWith("excel.q")) {
try {
// response.setContentType("application/vnd.ms-Excel");
//设置文件输出成Excel文件,在网页上的点击链接,就会下载成report.xls
response.setHeader("Content-Disposition", "attachment; filename=report.xls");
st = con.createStatement();
rs = st.executeQuery(sql);
System.out.println(sql);
OutputStream os = response.getOutputStream();

if (!new ExcelUtil().DB2Excel(rs, os)) {
log.info("Excel写入失败");
}
os.flush();
os.close();
} catch (Exception e) {
log.info(e.getMessage());
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值