首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

怎么将数据库中读出的结果集以EXCEL的形式输出

2012-04-09 
如何将数据库中读出的结果集以EXCEL的形式输出ConnectionconnullStatementstmtResultSetrsStringdrive

如何将数据库中读出的结果集以EXCEL的形式输出
Connection   con=null;
        Statement   stmt;
        ResultSet   rs;
                  String   driverName   =   "oracle.jdbc.driver.OracleDriver ";
                  String   connectionString   =   "jdbc:oracle:thin:@10.72.1.9:1522:FFV2DEV2 ";
                  String   userName       =   "produsr ";
                  String   password   =   "123456 ";
try{

    Class.forName(driverName);
    //   DriverManager.registerDriver(new   oracle.jdbc.driver.OracleDriver());
   
    con=DriverManager.getConnection(
                                connectionString,   userName,   password);

    stmt=con.createStatement();

    String   sql=new   String( "SELECT   *FROM   TBOPCOLLECTION   WHERE   AMOUNT   BETWEEN   1500   AND     1501     ORDER   BY   AMOUNT   DESC ");
        rs=   stmt.executeQuery(sql);
  到这一步,然后应该怎么处理将结果集RS中间的数据生成为EXCEL文件?
小弟港学JAVA请各位高手指教

[解决办法]
shuai45的意思没看明白,不过可能是说用命令行方式把一个数据库表转换为excel表。

楼主想要查询结果集转换为excel表,我知道有两种方式:一种是转换为csv格式(这是Excel的一种格式)。这种格式是纯文本,文本的一行对应于Excel表的一行,不同的列之间用“,”分隔。
另外一种方式就是利用java操作excel的API,比如Jakarta POI,从而可以对excel文件进行读写。可参见:http://jakarta.apache.org/poi/
[解决办法]
//定义结果集实例
ResultSet rs = null;
//定义结果集元素实例
ResultSetMetaData md = null;
//定义描述实例
Statement stmt = null;

try {

stmt = con.createStatement();

rs = stmt.executeQuery( "SELECT * FROM CAT ");
//相当于游标开始
md = rs.getMetaData();

out.println( "user table list: ");
while (rs.next()) {//使用列个数循环输出列对应行的值
for (int i = 1; i < md.getColumnCount(); i++) {
out.print(rs.getString(i));
}
}
stmt.close();//结束描述
rs.close();//结束游标
}
catch (SQLException e) {
//e.printStackTrace(out);
out.println(e);
}
可能还需要判断返回结果集是否为NULL 你自行添加吧.
[解决办法]
那你就需要看HSSF使用方法了.
获得结果集的循环中,就可以单独给 "EXCL实例 "单元格赋值了.给你一段代码:
//建立输出表实例
_workbook_out = new HSSFWorkbook();
//以后关闭要用实例fileOut
fileOut = new FileOutputStream(outfilename);
//建立表格实例
HSSFSheet sheet_out = _workbook_out.createSheet();
rows 结果集中的记录数
for (int r = 0; r < rows; r++) //row numbers
{//建立行
HSSFRow row_out = sheet_out.createRow(r);
//建立该行列循环
for (short c = 0; c < cells; c++) {
//建立输出单元格对象实例
HSSFCell cell_out = row_out.createCell(c);
//单元格汉字编码转换
cell_out.setEncoding(HSSFCell.ENCODING_UTF_16);
//设置单元格属性
cell_out.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
//添值(这个值就是你准备要取的结果集中的某个你要放置的值)
cell_out.setCellValue(numvalue);
}//列循环结束

} //行循环结束

//最后处理输出工作表关闭写入数据
_workbook_out.write(fileOut);
fileOut.close();



结构大致如此,因涉及企业代码不能完整帖出,请谅解.不过类似的代码网络上很多,或查看E文开源网站介绍的实例方法.

热点排行