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

从数据库导出数据到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());

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100649.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 新版eclipse自动补全代码不能用怎么办_eclipse打开代码提示

    新版eclipse自动补全代码不能用怎么办_eclipse打开代码提示最新下了新版的eclipse,版本为4.4和4.2,发现这两个版本都无法自动补全代码,经过与原来eclipse比较,发现有几项key的设置有问题,现在分享出来,以供和我遇到一样问题的人参考。设置如下:1.打开windows-&gt;perferences-&gt;keys2.在keys中搜索wordcompletion,将原来的Alt+/改为Ctrl+Alt+/3…

    2022年10月15日
    2
  • tabnine激活码-激活码分享

    (tabnine激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~V…

    2022年3月22日
    85
  • Java面试题–较经典

    Java面试题–较经典1、出处:2016年360Java面试题:原题:首先 代码跑一边 保证正确性。分析:往方法中传参,传的仅仅只是地址,而不是实际内存,所以不要以为y=x程序的执行,是 b=a的执行。这两者是不相等的。 2、出处:2016年 阿里巴巴Java面试题:原题:分析:本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上)参考:https://blog….

    2022年6月13日
    34
  • 公务员考试图形推理题库及答案_公务员考试连通图形

    公务员考试图形推理题库及答案_公务员考试连通图形除了上一篇文章中提到的平移「笔记」公务员考试图形推理部分解题方法(一):四处乱跑小黑块,还有一类图形推理的题目也是经常考察的内容——旋转与翻转。旋转题目相对好做,一般的旋转角度都是肉眼可以辨别的,不需要精确测量,比如下面这道题目,如果题目里面有多个旋转的部分,一定要分开来看。根据内环判定答案在CD中,根据最外环判定答案选C这个题目都是一个方格里面有4条线,所以元素组成相同,还是优先看它们的位置,…

    2022年9月9日
    1
  • Spring AOP原理「建议收藏」

    Spring AOP原理「建议收藏」Spring AOP原理

    2022年4月25日
    47
  • 微信自动回复机器人含源码和安装包[通俗易懂]

    微信自动回复机器人含源码和安装包[通俗易懂]介绍微信自动回复机器人,有三个机器人可供选择,可在界面进行配置,可定时提醒,bs端程序,基于C#winfrom程序安装教程源码地址:https://gitee.com/xiaoyutou_647/wechat-auto-reply-robot/blob/master/README.md直接打开\Setup1\setup.exe即可安装需要安装的环境已经集成使用说明1.点击启动微信2.扫码登陆3.运行成功4.5.根据最前面的id开启自动恢复功能6.也可进行语音唤醒,一起

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号