社区
Java SE
帖子详情
怎样将ResultSet rs直接输出到Excel?
ssh78
2004-04-27 02:11:15
我本来是将rs循环存到一个List里,在页面输出到<table>,然后在javascript fuction里调用Active X来将表格里的数据输出到Excel。但是由于rs数据量很大(10万),所以存入List的时候会报错。所以我想调用一个java方法,来直接将rs输出到Excel,请问该怎么写?
...全文
631
26
打赏
收藏
怎样将ResultSet rs直接输出到Excel?
我本来是将rs循环存到一个List里,在页面输出到,然后在javascript fuction里调用Active X来将表格里的数据输出到Excel。但是由于rs数据量很大(10万),所以存入List的时候会报错。所以我想调用一个java方法,来直接将rs输出到Excel,请问该怎么写?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ssh78
2004-04-30
打赏
举报
回复
难道问题2、3,java Excel Api就不能解决么?
ssh78
2004-04-28
打赏
举报
回复
奥,错了错了,是执行完while (rs.next())后报的错
ssh78
2004-04-28
打赏
举报
回复
我用java Excel Api,是这样做的:
将Result rs传入WriteData(ResultSet rs) 来进行查询结果的输出:
private void WriteData(ResultSet rs)
{
try
{
WritableWorkbook wwb = Workbook.createWorkbook(new File("d:/myexcel.xls"));
jxl.write.WritableSheet ws = wwb.createSheet("Stock Sheet 1", 0);
try
{
while (rs.next())
{
String productId = (String) rs.getString("product_Id");
String proNo = (String) rs.getString("product_No");
String proName = rs.getString("product_Name");
String description = rs.getString("description");
String abbreviation = rs.getString("abbreviation");
String proSpec = rs.getString("id_Value");
String onhandQty = rs.getString("quantity_on_hand");
String underwayQty = rs.getString("quantity_under_way");
String promisedQty = rs.getString("quantity_promised");
int i = rs.getRow();
jxl.write.Label labelA = new jxl.write.Label(i, 0, proNo);
jxl.write.Label labelB = new jxl.write.Label(i, 1, proName);
jxl.write.Label labelC = new jxl.write.Label(i, 2, description);
jxl.write.Label labelD = new jxl.write.Label(i, 3, abbreviation);
jxl.write.Label labelE = newjxl.write.Label(i, 4, proSpec);
ws.addCell(labelA);
ws.addCell(labelB);
ws.addCell(labelC);
ws.addCell(labelD);
ws.addCell(labelE);
}
wwb.write();
wwb.close();
} catch (....)
{....}
}catch (....)
{....}
}
可是执行到jxl.write.WritableSheet ws = wwb.createSheet("Stock Sheet 1", 0)这一句的时候,报错“COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E 函数顺序错误。 SQLSTATE=HY010”,这是为什么呢?难道这样写不对么?
panpan221
2004-04-28
打赏
举报
回复
新手学习
yunuo2010000
2004-04-28
打赏
举报
回复
学习
ssh78
2004-04-28
打赏
举报
回复
我们不能通过jdbc-odbc来写,因为我们是通过ofbiz的xml配置文件连数据库,而且用struts架构。
aixy
2004-04-28
打赏
举报
回复
学习
zealVampire
2004-04-28
打赏
举报
回复
其实你为什么要存到list的呢?
你读取的数据库不是excel而是其他数据库吗?
假设mysql->excel 呵呵开两个connect一个读一个写(jdbc-odbc)就是了
ssh78
2004-04-28
打赏
举报
回复
turbochen(程序员):可是这样的话,格式会乱的,我想要和Excel一样的格式。这样用户做一些改动的动作都方便
ssh78
2004-04-28
打赏
举报
回复
utf8代码显示中文的问题我已经解决了。
剩下的问题就是:
1 while(rs.next())处出错“COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E 函数顺序错误。 SQLSTATE=HY010”。
2 怎样不在程序中指定Excel文件的名称而弹出window保存文件的对话框,让用户自己去保存Excel文件。
3 如果我的纪录太多,如何让sheet达到10000行就再生成新的sheet
ssh78
2004-04-28
打赏
举报
回复
就剩下这两个问题就大功告成了,快帮帮我啊!
ssh78
2004-04-28
打赏
举报
回复
而且jxl.write.Label labelA = new jxl.write.Label(i, 0, proNo)里面如何让他显示utf8的汉字呢?
vongood
2004-04-28
打赏
举报
回复
关注
ssh78
2004-04-27
打赏
举报
回复
可是我们联接数据库不是用的jdbc-odbc桥的。
java Excel Api不可以解决么?
山卜居士
2004-04-27
打赏
举报
回复
最简单的方法:
StringBuffer buf = new StringBuffer();
while(rs.next)
{
buf.append(","+rs.getString(1));
buf.append(","+rs.getString(2));
buf.append(","+rs.getString(3));
buf.append(","+rs.getString(4));
...
buf.append("\r");
}
rs.close();
然后将buf内容存为扩展名为.csv的文件就行了,excel就可以开它了。
xiaoxhui
2004-04-27
打赏
举报
回复
最最简单的方式通过jdbc-odbc桥来写入
ssh78
2004-04-27
打赏
举报
回复
况且,那个http://www-900.cn.ibm.com/developerWorks/cn/java/l-javaExcel/的介绍只是在创建的Excel文件里添加了常量,并不是传递的数据阿。我想做的是不指定targetfile的名字,而是先生成一个Excel文件,然后让用户保存,请问可以做到么?怎么做呢?
ssh78
2004-04-27
打赏
举报
回复
请问如果用Arias(道) 的方法,rs的列数是不定的,怎样构造一个适合不同列的rs的通用的WriteData()呢?
ssh78
2004-04-27
打赏
举报
回复
这篇文章我已经搜到了。谢谢!
我决定用java Excel Api,我现在已经将jxl.jar添加到我的项目中了,这样在项目里就可以用import jxl.*了。
kkcncry
2004-04-27
打赏
举报
回复
只要有表格,就会有Microsoft Excel,用Microsoft Excel处理数据已成为不少人的习惯。Jakarta POI API就为Java程序员提供了一条存取Microsoft文档格式的神奇之路,其中最成熟的就是能存取Microsoft Excel文档的HSSF API。
本篇文章就举例示范如何利用Java 创建和读取Excel文档,并设置单元格的字体和格式。
为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/
创建Excel 文档
示例1将演示如何利用Jakarta POI API 创建Excel 文档。
示例1程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
public class CreateXL {
/** Excel 文件要存放的位置,假定在D盘JTest目录下*/
public static String outputFile="D:/JTest/ gongye.xls";
public static void main(String argv[]){
try{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("效益指标");
HSSFSheet sheet = workbook.createSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell((short) 0);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue("增加值");
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
System.out.println("文件生成...");
}catch(Exception e) {
System.out.println("已运行 xlCreate() : " + e );
}
}
}
读取Excel文档中的数据
示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件。
示例2程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
/** Excel文件的存放位置。注意是正斜线*/
public static String fileToBeRead="D:/JTest/ gongye.xls";
public static void main(String argv[]){
try{
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
// 创建对工作表的引用。
// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
HSSFSheet sheet = workbook.getSheet("Sheet1");
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
// 输出单元内容,cell.getStringCellValue()就是取所在单元的值
System.out.println("左上端单元是: " + cell.getStringCellValue());
}catch(Exception e) {
System.out.println("已运行xlRead() : " + e );
}
}
}
设置单元格格式
在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
1、创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
2、创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3、应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");
总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API,我们就可以轻易的在程序中存取Excel文档。
加载更多回复(6)
java 将数据库中的输入写入到
excel
中
将数据库中的数据写入到
excel
中的代码,包含用到的jar包
如何在jsp导出到
Excel
文件
如何在jsp导出到
Excel
文件
把数据库查询出来的结果放到
excel
中进行保存
把查询的结果放到
excel
中进行保存,自己留着使用,不建议别人下载
java 导出到
EXCEL
代码
java 导出到
EXCEL
代码 方便易用 只需写入sql语句 和设置
excel
字段名
java将数据库的数据导入
excel
java将数据库的数据导入
excel
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章