excel报表解决方法(ebs)

长久以来,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文件。

附上package源代码,本例子在application 11.5.8,和本机excel 2003,ie6.0测试正常

一下为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-com:office: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,'  <ProtectStructure>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;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11536986/viewspace-621193/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11536986/viewspace-621193/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值