如何将oracle的表导到Excel里???(急)

dong8255 2007-04-26 10:21:03
现在我要的功能是:点击页面按钮就可以将数据库里的一张表导到Excel里放到本地盘中。(现在不要其他条件,就是将表导到Excel里放到本地盘中,如C盘根目录下)

EXEC master..xp_cmdshell 'bcp dongdata.dbo.user_log out c:\Temp.xls -c -q -S"127.0.0.1" -U"" -P""'
这个语句是在sql server 将表(user_log)导到Excel里的!在sql查询分析器里,我试过可以成功(已经将我的user_log表导到c盘下的Templ.xls了),在页面代码里还没有试过调用这个语句!

因为我用的数据库是oracle,所以我把上面这个句话放在PL/SQL里执行,但错误,这个语句怎么改?还是本来就不应该这样写?我在网上找了很久找不到相关的。
最后问题是:如果这个语句在PL/SQL里执行成功的话,我在页面(action)里执行这个语句来达到我要的功能,应该没有问题吧!!!或者还有没有其他的办法???

在线等!!!求救,谢谢了!
...全文
445 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dong8255 2007-04-26
  • 打赏
  • 举报
回复
yksky(北风)
===========

可以加我QQ聊一下吗?谢谢了!好急!
dong8255 2007-04-26
  • 打赏
  • 举报
回复
在线等,急!!!
yksky 2007-04-26
  • 打赏
  • 举报
回复
如果只是想在PL/SQL后台上跑的话,可以这么做:
运行SQL/PLUS,不要在dos下运行,否则会出现问题
sql>spool /temp/aaa.cvs
sql>select * from test;
sql>spool off
我的oracle安装目录是D:\oracle,运行完之后,会在d盘下生成temp文件夹,aaa.cvs文件就存在里面,利用excel打开即可
dong8255 2007-04-26
  • 打赏
  • 举报
回复
qingyuan18
==========

谢谢楼上的!!!
首先我想在PL/SQL后台跑。看看能不能把我的表导到Excel里!能告诉我这样的sql语句吗?

我的最终功能是:想在jsp页面里调用这个sql语句把表导到Excel里!(可能我的思路不对),而且我的jsp页面就只有一个按钮。就想实现这样的功能。
qingyuan18 2007-04-26
  • 打赏
  • 举报
回复
楼主关键是你想用oracle提供的命令在后台跑PL/SQL完成导出到Excel还是在页面上用java来把页面Table数据写到Excel中去?这两种解决方案是完全不同的思路,前者更简单一点,但是涉及到Java的Runtime调用,要考虑权限问题

现在业界大多数的解决方案都是在Jsp页面将数据用java写到Excel中,这样跟oracle就没什么关系了,java操作Excel的开源包有很多,最方便的我觉得Jxl.jar做得不错,是个韩国的程序员写的

http://qingyuan18.spaces.live.com/?_c11_BlogPart_FullView=1&_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=amonth%3D7%26ayear%3D2006
这里有jxl的大致的说明
dong8255 2007-04-26
  • 打赏
  • 举报
回复
yksky(北风)
============
我现在要的功能还没有这么复杂,我现在要的:只要一点击按钮就把表导到Excel里。急呀!
HelloWorld_001 2007-04-26
  • 打赏
  • 举报
回复
最简单的方法,用IE打开你的网页,按F2就可以保存成EXCEL
dong8255 2007-04-26
  • 打赏
  • 举报
回复
楼上的,可以加一下我的QQ吗?真的很需要帮忙呀!
QQ:179487943
yksky 2007-04-26
  • 打赏
  • 举报
回复
呵呵,前几天我也要用到导出excel的,要求:在jsp页面上有多条件查询,要求将查询的结果动态的导出到excel中去,利用了Apache的POI来做的:
public class ExportExcel {

//数据源
private Vector vector ;

public ExportExcel(Vector vector){
this.vector = vector ;
}

/**
* 对Vector数据源将其里面的数据导入到excel表单
* @param fieldName[] 导出到excel文件里的表头名
* @param sheetName 工作表的名称
* @param output java输出流
*/
public void getExcel(String[] fieldName,String sheetName,OutputStream output){

//产生工作薄对象
HSSFWorkbook workbook = new HSSFWorkbook();

//产生工作表对象
HSSFSheet sheet = workbook.createSheet();

//为了工作表能支持中文,设置字符集为UTF_16
workbook.setSheetName(0, sheetName, HSSFWorkbook.ENCODING_UTF_16);

//产生一行
HSSFRow row = sheet.createRow(0);

//产生单元格
HSSFCell cell ;

//写入各个字段的名称
for(int i=0;i<fieldName.length;i++){
//创建第一行各个字段名称的单元格
cell = row.createCell((short)i);
//设置单元格内容为字符串型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//为了能在单元格中输入中文,设置字符集为UTF_16
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//给单元格内容赋值
cell.setCellValue(fieldName[i]);
}
System.out.println("vector.size()="+vector.size());
//写入各条记录,每条记录对应excel表中的一行
for(int i=0;i<vector.size();i++){
row = sheet.createRow(i+1);
Vector v = (Vector)vector.get(i);
for(int j=0;j<v.size();j++){
cell = row.createCell((short)j);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(v.get(j).toString());
}
}
try {
output.flush();
workbook.write(output);

} catch (IOException e) {
e.printStackTrace();
System.out.println("Output is closed");
}

}

}
然后在struts中的action中调用即可:
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response) throws IOException{

response.reset();
response.setContentType("application/vnd.ms-excel");


AcdtExcel db = new AcdtExcel();
Vector vector = db.getAcdtExcel();
String[] fieldName = {""};
String sheetName = "所有事故信息";
ExportExcel export = new ExportExcel(vector);
ServletOutputStream output = response.getOutputStream();
if(output!=null){
export.getExcel(fieldName, sheetName, response.getOutputStream());
}
return null ;
}
至于struts的配置文件,相信你自己能搞定,^_^
dong8255 2007-04-26
  • 打赏
  • 举报
回复
楼上的可以说清楚一点吗?谢了!
全粘架构师 2007-04-26
  • 打赏
  • 举报
回复
spool temp.xls
select * from table

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧