壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19768|回复: 30

excel报表解决方法

[复制链接]
发表于 2005/7/29 00:36:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
长久以来,oracle运行的excel报表经常采用csv格式,用户需要view output,然后另存为本地csv文件,才能用excel打开,而且不能保留excel格式,包括字段长度,字段格式掩码,以及公式等。

因为项目需要excel文件包含公式,所以采用以下方案解决。

(1)将格式template文件在excel中制做,保存时,选取XML Spreadsheet格式,生成xml 模板文件,这样这个文件可以包含公式等。

(2)采用fnd_file.put_line方式将xml模板文件输出,数据列可以依据编程要求修改。

(3)建立concurrent program采用XML输出方式。

(4)这样用户在view output时候,浏览器可以自动打开这个excel文件。
 楼主| 发表于 2005/7/29 00:41:37 | 显示全部楼层
一下为Sample函数包:
create or replace package TEST_XML_PKG is
  procedure main(errbuf            OUT VARCHAR2,
                 retcode           OUT VARCHAR2);
end TEST_XML_PKG;
/
create or replace package body TEST_XML_PKG is
procedure main(errbuf            OUT VARCHAR2,
               retcode           OUT VARCHAR2)
is
begin
fnd_file.put_line(fnd_file.output,'<?xml version="1.0"?>');
fnd_file.put_line(fnd_file.output,'<?mso-application progid="Excel.Sheet"?>');
fnd_file.put_line(fnd_file.output,'<Workbook xmlns="urn:schemas-microsoft-comffice:spreadsheet"');
fnd_file.put_line(fnd_file.output,' xmlns:o="urn:schemas-microsoft-com:office:office"');
fnd_file.put_line(fnd_file.output,' xmlns:x="urn:schemas-microsoft-com:office:excel"');
fnd_file.put_line(fnd_file.output,' xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"');
fnd_file.put_line(fnd_file.output,' xmlns:html="'">http://www.w3.org/TR/REC-html40">');
fnd_file.put_line(fnd_file.output,' <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">');
fnd_file.put_line(fnd_file.output,'  <Author>Authorised User</Author>');
fnd_file.put_line(fnd_file.output,'  <LastAuthor>Authorised User</LastAuthor>');
fnd_file.put_line(fnd_file.output,'  <Created>2005-01-26T07:43:18Z</Created>');
fnd_file.put_line(fnd_file.output,'  <Company>test</Company>');
fnd_file.put_line(fnd_file.output,'  <Version>11.6360</Version>');
fnd_file.put_line(fnd_file.output,' </DocumentProperties>');
fnd_file.put_line(fnd_file.output,' <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">');
fnd_file.put_line(fnd_file.output,'  <WindowHeight>5070</WindowHeight>');
fnd_file.put_line(fnd_file.output,'  <WindowWidth>10635</WindowWidth>');
fnd_file.put_line(fnd_file.output,'  <WindowTopX>360</WindowTopX>');
fnd_file.put_line(fnd_file.output,'  <WindowTopY>75</WindowTopY>');
fnd_file.put_line(fnd_file.output,'  &ltrotectStructure>False</ProtectStructure>');
fnd_file.put_line(fnd_file.output,'  <ProtectWindows>False</ProtectWindows>');
fnd_file.put_line(fnd_file.output,' </ExcelWorkbook>');
fnd_file.put_line(fnd_file.output,' <Styles>');
fnd_file.put_line(fnd_file.output,'  <Style ss:ID="Default" ss:Name="Normal">');
fnd_file.put_line(fnd_file.output,'   <Alignment ss:Vertical="Center"/>');
fnd_file.put_line(fnd_file.output,'   <Borders/>');
fnd_file.put_line(fnd_file.output,'   <Font ss:FontName="新細明體" x:Family="Roman" ss:Size="12"/>');
fnd_file.put_line(fnd_file.output,'   <Interior/>');
fnd_file.put_line(fnd_file.output,'   <NumberFormat/>');
fnd_file.put_line(fnd_file.output,'   <Protection/>');
fnd_file.put_line(fnd_file.output,'  </Style>');
fnd_file.put_line(fnd_file.output,'  <Style ss:ID="s21">');
fnd_file.put_line(fnd_file.output,'   <Font ss:FontName="Arial Unicode MS" x:CharSet="134" x:Family="Swiss"');
fnd_file.put_line(fnd_file.output,'    ss:Size="12"/>');
fnd_file.put_line(fnd_file.output,'  </Style>');
fnd_file.put_line(fnd_file.output,'  <Style ss:ID="s22">');
fnd_file.put_line(fnd_file.output,'   <Font ss:FontName="Arial Unicode MS" x:CharSet="134" x:Family="Swiss"');
fnd_file.put_line(fnd_file.output,'   ss:Size="12" ss:Color="#FF0000"/>');
fnd_file.put_line(fnd_file.output,'  </Style>');
fnd_file.put_line(fnd_file.output,' </Styles>');
fnd_file.put_line(fnd_file.output,' <Worksheet ss:Name="Sheet1">');
fnd_file.put_line(fnd_file.output,'  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="1" x:FullColumns="1"');
fnd_file.put_line(fnd_file.output,'   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="16.5">');
fnd_file.put_line(fnd_file.output,'   <Row ss:Height="17.25">');
fnd_file.put_line(fnd_file.output,'    <Cell ss:StyleID="s22"><Data ss:Type="Number">11</Data></Cell>');
fnd_file.put_line(fnd_file.output,'    <Cell ss:StyleID="s21"><Data ss:Type="Number">4</Data></Cell>');
fnd_file.put_line(fnd_file.output,'<Cell ss:StyleID="s21" ss:Formula="=RC[-2]*RC[-1]"><Data ss:Type="Number">44</Data></Cell>');
fnd_file.put_line(fnd_file.output,'   </Row>');
fnd_file.put_line(fnd_file.output,'  </Table>');
fnd_file.put_line(fnd_file.output,'  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">');
fnd_file.put_line(fnd_file.output,'   <Print>');
fnd_file.put_line(fnd_file.output,'    <ValidPrinterInfo/>');
fnd_file.put_line(fnd_file.output,'    <PaperSizeIndex>9</PaperSizeIndex>');
fnd_file.put_line(fnd_file.output,'    <HorizontalResolution>600</HorizontalResolution>');
fnd_file.put_line(fnd_file.output,'    <VerticalResolution>0</VerticalResolution>');
fnd_file.put_line(fnd_file.output,'   </Print>');
fnd_file.put_line(fnd_file.output,'   <Selected/>');
fnd_file.put_line(fnd_file.output,'   <Panes>');
fnd_file.put_line(fnd_file.output,'    <Pane>');
fnd_file.put_line(fnd_file.output,'     <Number>3</Number>');
fnd_file.put_line(fnd_file.output,'     <ActiveCol>2</ActiveCol>');
fnd_file.put_line(fnd_file.output,'    </Pane>');
fnd_file.put_line(fnd_file.output,'   </Panes>');
fnd_file.put_line(fnd_file.output,'   <ProtectObjects>False</ProtectObjects>');
fnd_file.put_line(fnd_file.output,'   <ProtectScenarios>False</ProtectScenarios>');
fnd_file.put_line(fnd_file.output,'  </WorksheetOptions>');
fnd_file.put_line(fnd_file.output,' </Worksheet>');
fnd_file.put_line(fnd_file.output,' <Worksheet ss:Name="Sheet2">');
fnd_file.put_line(fnd_file.output,'  <Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"');
fnd_file.put_line(fnd_file.output,'   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="16.5"/>');
fnd_file.put_line(fnd_file.output,'  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">');
fnd_file.put_line(fnd_file.output,'   <ProtectObjects>False</ProtectObjects>');
fnd_file.put_line(fnd_file.output,'   <ProtectScenarios>False</ProtectScenarios>');
fnd_file.put_line(fnd_file.output,'  </WorksheetOptions>');
fnd_file.put_line(fnd_file.output,' </Worksheet>');
fnd_file.put_line(fnd_file.output,' <Worksheet ss:Name="Sheet3">');
fnd_file.put_line(fnd_file.output,'  <Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"');
fnd_file.put_line(fnd_file.output,'   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="16.5"/>');
fnd_file.put_line(fnd_file.output,'  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">');
fnd_file.put_line(fnd_file.output,'   <ProtectObjects>False</ProtectObjects>');
fnd_file.put_line(fnd_file.output,'   <ProtectScenarios>False</ProtectScenarios>');
fnd_file.put_line(fnd_file.output,'  </WorksheetOptions>');
fnd_file.put_line(fnd_file.output,' </Worksheet>');
fnd_file.put_line(fnd_file.output,'</Workbook>');
end;
end TEST_XML_PKG;
/

[此贴子已经被作者于2005-7-29 0:42:22编辑过]

发表于 2005/7/29 10:19:32 | 显示全部楼层
试一下
发表于 2005/8/13 15:32:41 | 显示全部楼层
需要step by step[em01]
发表于 2005/8/14 22:24:06 | 显示全部楼层
TEST NOT SUCCE
发表于 2006/6/30 09:45:25 | 显示全部楼层
链接丢失,没法下载附件。

(1)将格式template文件在excel中制做,保存时,选取XML Spreadsheet格式,生成xml 模板文件,这样这个文件可以包含公式等。

请问template文件在哪?
发表于 2006/6/30 11:09:59 | 显示全部楼层
使用这个附件吧。

EXCEL.rar

1.21 KB, 下载次数: 151, 下载积分: 努力值 -5 点

发表于 2006/9/14 11:46:11 | 显示全部楼层
收藏
发表于 2006/9/15 14:18:35 | 显示全部楼层
怎么会有笑脸什么的?
发表于 2006/9/15 17:03:05 | 显示全部楼层
收藏
发表于 2006/11/14 12:05:13 | 显示全部楼层
如果离开ERP环境能不能实现?建立concurrent program采用XML输出方式,此代码如果手工怎么写?输出XML格式是什么?
发表于 2006/11/14 13:31:52 | 显示全部楼层
好是好,就是格式难调啊
发表于 2007/6/13 14:51:02 | 显示全部楼层
Sorry!我用了這個方式,ViewOutput後卻只有xml Source Code,並不會打開Excel呢?
是要在怎樣設定嗎?Thanks
:02526o1
发表于 2007/6/13 16:08:56 | 显示全部楼层
好多是表情符號,請寄一份給我,itjane123@163.com,我可能用上
发表于 2007/6/13 21:13:31 | 显示全部楼层
好东西啊
一直想这样处理
发表于 2007/6/18 12:26:39 | 显示全部楼层
view output 的結果是︰


無法顯示 XML 網頁
無法使用 樣式表檢視 XML 輸入。請更正錯誤,然後按 重新整理按鈕,或者稍後再試一次。


--------------------------------------------------------------------------------

文件的最上層無效。處理資源 'http://test.testserver.com:10015/OA_CGI/FNDWRR.exe?temp_id=2566110581&login=APPLSYSPUB/PUB@PORCLI' 發生錯誤。第...

<?xml version="1.0"?>
-^
发表于 2007/7/20 09:52:34 | 显示全部楼层
:p:p:p:p:p:p:p:p:p
发表于 2007/12/6 12:05:12 | 显示全部楼层
原帖由 koei1025 于 2007-6-13 14:51 发表
Sorry!我用了這個方式,ViewOutput後卻只有xml Source Code,並不會打開Excel呢?
是要在怎樣設定嗎?Thanks
:02526o1

我也碰到这个问题。

开始是无法显示xml页,在xml声明中加了编码字符的声明可以解决,

但是如何才能直接打开excel呢?

[ 本帖最后由 bearsnow 于 2007-12-6 12:06 编辑 ]
发表于 2007/12/27 11:13:40 | 显示全部楼层
:lol :lol
发表于 2007/12/27 11:14:18 | 显示全部楼层
:victory: :victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 19:35 , Processed in 0.028611 second(s), 17 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表