如何将数据库中读出的结果集以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文开源网站介绍的实例方法.