采用的办法是先输出HTML文件,然后再用HTML脚本进行转化为EXCEL。
===========================================================
PROCEDURE MAIN(ERRCODE OUT VARCHAR2,
ERRBUF OUT VARCHAR2,
P_ORG_ID IN NUMBER) IS
CURSOR CUR_A IS
SELECT PV.VENDOR_ID,
PV.VENDOR_NAME,
PV.SEGMENT1,
ASSA.VENDOR_SITE_ID,
ASSA.VENDOR_SITE_CODE,
HPS.PARTY_SITE_NAME,
ASSA.ORG_ID
FROM PO_VENDORS PV,
AP_SUPPLIER_SITES_ALL ASSA, --地点
HZ_PARTY_SITES HPS --地址
WHERE PV.VENDOR_ID = ASSA.VENDOR_ID(+)
AND ASSA.PARTY_SITE_ID = HPS.PARTY_SITE_ID
AND ASSA.ORG_ID = P_ORG_ID
ORDER BY VENDOR_ID;
BEGIN
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<html>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<head>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<meta http-equiv="Content-Type" content="text/html; charset=gb2312">'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<style type="text/css">'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' h2 {font-size: 30pt; font-family:''宋体, Arial''}')); --24--35pt
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' td, body {font-size: 15px; font-family:''宋体, Arial''}')); --16--18px
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' div.breakafter { page-break-after:always; }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' div.breakbefore { page-break-before:always; }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</style>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<script defer>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('function SetPrintSettings() {'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' factory.printing.header = "";'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' factory.printing.footer = "";'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' factory.printing.portrait = true;'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' factory.printing.leftMargin = 10.0;')); --25
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' factory.printing.topMargin = 10.0;')); --20
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' factory.printing.rightMargin = 10.0;'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' factory.printing.bottomMargin = 10.0;'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('}'));
-- CNC_PRJNL_PUT_LINE(p_srs_flag,'OUTFILE', 'SetPrintSettings();');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</script>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<script>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('var excelObj; var $Table; '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('function printTable(talbleId){'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' var rows,cols; var i,j; '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' $Table=document.all(talbleId); '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' rows=$Table.rows.length;'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' if(rows>0){ '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' try{'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' cols=$Table.rows(0).children.length; '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' excelObj = new ActiveXObject("Excel.Application");'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' excelObj.Visible = true; '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' excelObj.WorkBooks.Add;'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' for(i=1;i<=rows;i++) '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' for(j=1;j<=cols;j++){'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' showInExcel(i,j,$Table.rows(i-1).children(j-1).innerText);'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' }catch(e){alert("生成Excel失败!");} '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' else{'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' alert("no data");}'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('function showInExcel(row,col,value){'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
(' excelObj.Cells(row, col).Value=value; '));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, (' }'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</script>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</head>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<body>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<table name="excel_table" id="excel_table" align=center style="width: 850px; vertical-align: center; text-align: left;" border="1" cellpadding="0" cellspacing="0">'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tbody>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商ID</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商名称</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商编码</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点ID</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点编码</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地址</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">供应商地点对应组织ID</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));
FOR REC_A IN CUR_A LOOP
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.VENDOR_ID || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.VENDOR_NAME || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.SEGMENT1 || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 10%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.VENDOR_SITE_ID || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.VENDOR_SITE_CODE || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.PARTY_SITE_NAME || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td style="width: 6%; vertical-align: middle; text-align: center;"><span style="font-size: 12; font-family: 宋体">' ||
REC_A.ORG_ID || '</span></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));
END LOOP;
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tbody></table>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<table ><tbody>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<table align=center style="width: 850px; vertical-align: center; text-align: left;" border="0" cellpadding="0" cellspacing="0">'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tbody>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('<tr>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
('<td align="right"><input type="submit" name="C_EXCEL" value="保存成Excel" id="C_EXCEL" onclick="printTable(''excel_table'')" /></td>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tr>'));
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ('</tbody></table>'));
END MAIN;
本文作者:网友 来源: http://ema100.blog.sohu.com/entry/7939428/