日期:2014-05-18  浏览次数:20869 次

如何将oracle的表导到Excel里???(急)
现在我要的功能是:点击页面按钮就可以将数据库里的一张表导到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)里执行这个语句来达到我要的功能,应该没有问题吧!!!或者还有没有其他的办法???

在线等!!!求救,谢谢了!

------解决方案--------------------
spool temp.xls
select * from table
------解决方案--------------------
呵呵,前几天我也要用到导出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的配置文件,相信你自己能搞定,^_^
------解决方案--------------------
最简单的方法,用IE打开你的网页,按F2就可以保存成EXCEL
SSH架构中关于业务逻辑层的理解,还请大家指正,多谢