oracle数据导出到excel

Adebayor 2010-04-19 09:20:59
我想把database的数据导出到excel
导出的数据有格式要求 如:文字列,数据只占一个单元格,列名有背景色
这些oracle能实现吗?
可以的话 最好通过spool或sqlloader实现
期待高手
...全文
895 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2010-04-26
  • 打赏
  • 举报
回复
呵呵,昨天成功试验了ORACLE发送邮件和附件的功能了,这几天试试用存储过程操作POI,成功的话,嘿嘿嘿一个KPI就拿下来,奖励200元.....
patrickjiang 2010-04-26
  • 打赏
  • 举报
回复
LZ,写JAVA代码解决吧
zhanhuaquan 2010-04-26
  • 打赏
  • 举报
回复
我公司用的是oracle数据库,用delphi编写导出excel程序,在oracle form中执行,效果非常好,手工操作excel的一切效果,delphi都可做到.我有原程序,如需要可以加我QQ 275633688
Adebayor 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 adebayor 的回复:]
我想把database的数据导出到excel
导出的数据有格式要求 如:文字列,数据只占一个单元格,列名有背景色
这些oracle能实现吗?
可以的话 最好通过spool或sqlloader实现
期待高手
[/Quote]
我的这个实验 估计要泡汤了
文字列,列名有背景色 这些格式都pass了 还是有问题
Adebayor 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 java3344520 的回复:]

呵呵,昨天成功试验了ORACLE发送邮件和附件的功能了,这几天试试用存储过程操作POI,成功的话,嘿嘿嘿一个KPI就拿下来,奖励200元.....
[/Quote]
ORACLE发送邮件和附件? 呵呵 好想法
与outlook吗?
bjsavage 2010-04-26
  • 打赏
  • 举报
回复
好的,学习了。
orava 2010-04-24
  • 打赏
  • 举报
回复
通过spool可以导出成*.csv 格式,但是它是只是以“,”分隔的纯文本格式,是不能控制excel的格式的,要控制excel格式只能utl_file包写文件了
yubin88 2010-04-23
  • 打赏
  • 举报
回复
楼主可以试试用java程序导~~~~
需要的包为oracle 驱动包,apache下的poi包
import java.io.*;
import java.sql.*;
import org.apache.poi.hssf.usermodel.*;

public class AppMain {
public AppMain() {
}

public static void main(String[] args) {
try {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet =null;

/**连接ORACLE的数据库,关键在于两个系统级的VIEW:
all_tab_columns 记录着ORACLE所有的字段定义信息.
DBA_COL_COMMENTS 记录着字段的注释信息,*/


Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.1.111:1521:ncdb", "system", "fty001");
Statement stmt = con.createStatement();
StringBuffer strbuf = new StringBuffer();
strbuf.append("SELECT A.*,B.comments");
strbuf.append(" FROM all_tab_columns A,DBA_COL_COMMENTS B");
strbuf.append(" WHERE A.owner=B.owner");
strbuf.append(" AND A.table_name=B.table_name");
strbuf.append(" AND A.COLUMN_NAME=B.COLUMN_NAME");
//owner是建立表的用户名
strbuf.append(" AND A.owner='SCOTT'");
strbuf.append(" ORDER BY A.TABLE_NAME");
ResultSet rs = stmt.executeQuery(strbuf.toString());

String tb = "";
int k = 0;
while (rs.next()) {
//对每个表生成一个新的sheet,并以表名命名
if (!tb.equals(rs.getString("TABLE_NAME"))) {
sheet = wb.createSheet(rs.getString("TABLE_NAME"));
//设置表头的说明
HSSFRow row = sheet.createRow(0);
setCellGBKValue(row.createCell((short) 0),"字段名");
setCellGBKValue(row.createCell((short) 1),"字段类型");
setCellGBKValue(row.createCell((short) 2),"字段长度");
setCellGBKValue(row.createCell((short) 3),"数字长度");
setCellGBKValue(row.createCell((short) 4),"小数位数");
setCellGBKValue(row.createCell((short) 5),"能否为NULL");
setCellGBKValue(row.createCell((short) 6),"字段说明");
k = 1;
} else {
k++;
}
tb = rs.getString("TABLE_NAME");
HSSFRow row = sheet.createRow(k);
row.createCell((short) 0).setCellValue(rs.getString(
"COLUMN_NAME"));
row.createCell((short) 1).setCellValue(rs.getString("DATA_TYPE"));
row.createCell((short) 2).setCellValue(rs.getString(
"DATA_LENGTH"));
row.createCell((short) 3).setCellValue(rs.getString(
"DATA_PRECISION"));
row.createCell((short) 4).setCellValue(rs.getString(
"DATA_SCALE"));
row.createCell((short) 5).setCellValue(rs.getString("NULLABLE"));
setCellGBKValue(row.createCell((short) 6),rs.getString("COMMENTS"));

}

//把生成的EXCEL文件输出保存
FileOutputStream fileOut = new FileOutputStream("E:\\数据字典.xls");
wb.write(fileOut);
fileOut.close();

rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}

/**

这个函数是为了设置一个CELL为中文字符串

*/

private static void setCellGBKValue(HSSFCell cell, String value) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//设置CELL的编码信息
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(value);
}
}
mengxj85 2010-04-21
  • 打赏
  • 举报
回复
来学习学习,每天进步一点
Phoenix_99 2010-04-20
  • 打赏
  • 举报
回复
用前台导出吧,数据库好像满足不了你的要求
Adebayor 2010-04-20
  • 打赏
  • 举报
回复
不要使用toad 那样还不如我手动操作excel了呢
徐小路 2010-04-20
  • 打赏
  • 举报
回复
用java吧!!!!
cyousor 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sosoyiyi 的回复:]

toad绝对实现不了楼主的需求,而且toad对中文支持的不好
[/Quote]

可以啊,
save grid contents -> xls file->
在这里设置一下,
对于中文,要把write wide strings 那个选项勾上,
应该没问题。
sosoyiyi 2010-04-20
  • 打赏
  • 举报
回复
toad绝对实现不了楼主的需求,而且toad对中文支持的不好
cyousor 2010-04-20
  • 打赏
  • 举报
回复
用toad能实现你要的,
只不过。。。
Adebayor 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tianlesoftware 的回复:]
在spool的时候,可以导出成网页形式的excel。 看上去比较整齐, 不知道能否达到你的要求, 而且它的颜色也是比较亮的。 下面是我用的个脚本。


test.sql
SQL code

conn USER/PWD@SID

set heading off
Set pagesize 0
Set term off
Set feedback off
set linesize 99999
……
[/Quote]
这种方式我试过 效果不行
目的主要是想办公自动化
iqlife 2010-04-20
  • 打赏
  • 举报
回复
6楼,我试了下,导出来的结果如下
工号 姓名 薪水 部门号
7369, SMITH, 800, 20,
7499, ALLEN, 1600, 30,
7521, WARD, 1250, 30,
7566, JONES, 2975, 20,
7654, MARTIN, 1250, 30,
7698, BLAKE, 2850, 30,
没有更好的效果了?
碧水幽幽泉 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tianlesoftware 的回复:]
在spool的时候,可以导出成网页形式的excel。 看上去比较整齐, 不知道能否达到你的要求, 而且它的颜色也是比较亮的。 下面是我用的个脚本。


test.sql

SQL code

conn USER/PWD@SID

set heading off
Set pagesize 0
Set term off
Set feedback off
set linesi……
[/Quote]

up!
iqlife 2010-04-20
  • 打赏
  • 举报
回复
不能进行EXCEL操作的,我之前也想在ORACLE里写,但是发现可能需要在JAVA存储过程里写.不会就暂时搁置了了....
Dave 2010-04-19
  • 打赏
  • 举报
回复

在spool的时候,可以导出成网页形式的excel。 看上去比较整齐, 不知道能否达到你的要求, 而且它的颜色也是比较亮的。 下面是我用的个脚本。


test.sql

conn USER/PWD@SID

set heading off
Set pagesize 0
Set term off
Set feedback off
set linesize 99999
set trimspool off
set term off verify off feedback off pagesize 99999
set markup html on entmap ON spool on preformat off

spool D:\重建客户资料\重建客户资料.xls
select '顾客卡号','类型','时间','工号','电话','区号','地址' from dual
union all
select custid||',', custtype||',', regdate||',', opid||',', custcode||',', areacode||',',addrabb
from rebuilduser;
spool off
exit



只要定时执行这个批处理就可以了:test.bat

set oracle_sid=SID
sqlplus /nolog @test.sql
exit


具体用法,可以参考我的BLog:sqlplus SPOOL 导出网页文件
http://blog.csdn.net/tianlesoftware/archive/2010/01/30/5270191.aspx



------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
加载更多回复(5)

17,382

社区成员

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

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