1、xml publisher + Excel模板

这种方式需要提前定义好Excel模板,类似rtf模板一样,适合格式较为复杂表单。

详细参考:XML Publiser For Excel Template_weixin_30267691的博客-CSDN博客

2、plsql + xml直接输出

这种方式不需要定义模板,可在package中直接定义表的标题,然后输出行,适合比较简单的表单

参考程序:

 /* ===============================================*   PROGRAM NAME:*                cux_po_display_excel_rpt*   DESCRIPTION:*                CUX:PO台账报表*   HISTORY:*     1.00   2021/01/19     xxxxxx   Creation  RE20201209001* ==============================================*/g_report_title VARCHAR2(80) := 'PO台账报表';g_charset CONSTANT VARCHAR2(30) := fnd_profile.value('ICX_CLIENT_IANA_ENCODING');--g_pkg_name CONSTANT VARCHAR2(35) := 'CUX_PO_DISPLAY_EXCEL_RPT';g_data_format      VARCHAR2(30) := 'YYYY-MM-DD';g_data_format_time VARCHAR2(30) := 'YYYY-MM-DD hh24:mi:ss';PROCEDURE output(p_info IN VARCHAR2) ISBEGINfnd_file.put_line(fnd_file.output,p_info);END output;PROCEDURE log(p_message IN VARCHAR2) ASBEGINfnd_file.put_line(fnd_file.log,p_message);END;/* ==============================================*   PROCEDURE NAME*       output_html_head*   DESCRIPTION:*       output report title and header*   ARGUMENT:*       p_report_title    - report name*       p_report_css*   RETURN:*   HISTORY:*    1.00   2021/01/19     xxxxxx   Creation  RE20201209001* ==============================================*/PROCEDURE output_html_head(p_report_title IN VARCHAR2,p_report_css   IN VARCHAR2) ISl_client_charset VARCHAR2(150);BEGINBEGINSELECT v.tagINTO l_client_charsetFROM fnd_lookup_values_vl vWHERE v.lookup_type = 'FND_ISO_CHARACTER_SET_MAP'AND v.lookup_code = fnd_profile.value('FND_NATIVE_CLIENT_ENCODING')AND v.enabled_flag = 'Y'AND trunc(SYSDATE) BETWEEN nvl(v.start_date_active,trunc(SYSDATE - 1)) AND nvl(v.end_date_active,trunc(SYSDATE + 1));EXCEPTIONWHEN no_data_found THENl_client_charset := 'UTF-8';END;output('<html>');output('<head>');output('<meta http-equiv="Content-Type" content="text/html; charset=' || l_client_charset || '">');output('<title>' || p_report_title || '</title>');output('<style type="text/css" media="all">');output('body,table{font-size:13px;font-family:"Book Antiqua","Segoe UI", Tahoma, "Trebuchet MS", verdana, helvetica, arial, sans-serif, Georgia;}#table_margin{margin-left:50px;}.default_text {mso-number-format:"\@";};.num{mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\\-\#\,\#\#0\.00\\ ";};.percent{mso-number-format:Percent;};.percent1{font-style:italic;text-decoration:underline;text-underline-style:single;mso-number-format:Percent;}');IF substr(p_report_css,1,1) = '.' THENoutput(';' || p_report_css);END IF;output('</style>');output('</head>');output('</br>');output('<body>');output('<H3 align=center>' || p_report_title || '</H3>');output('</br>');END output_html_head;/* =================================================================*   PROCEDURE: print_header**   DESCRIPTION: 打印报表列头**   PARAMS:**   HISTORY:*     1.00   2021/01/19     xxxxxx   Creation  RE20201209001* =====================================================================*/PROCEDURE print_header ISBEGINoutput('<tr bgcolor="#BBBBBB">');--output('<td nowrap align=center><B>' || '业务实体' || '</B></td>');output('<td nowrap align=center><B>' || 'PO号' || '</B></td>');output('<td nowrap align=center><B>' || '供应商编码' || '</B></td>');output('<td nowrap align=center><B>' || '供应商地点' || '</B></td>');output('<td nowrap align=center><B>' || '生产国' || '</B></td>');--5output('<td nowrap align=center><B>' || 'PO创建日期' || '</B></td>');output('<td nowrap align=center><B>' || '采购员' || '</B></td>');output('<td nowrap align=center><B>' || '订单创建者' || '</B></td>');output('<td nowrap align=center><B>' || '物料编码' || '</B></td>');output('<td nowrap align=center><B>' || 'title_mini' || '</B></td>');--10output('<td nowrap align=center><B>' || 'PO行数量' || '</B></td>');output('<td nowrap align=center><B>' || 'PO号-行号-发运行号' || '</B></td>');output('<td nowrap align=center><B>' || 'PO发运行数量*' || '</B></td>');output('<td nowrap align=center><B>' || 'PR编码' || '</B></td>');output('<td nowrap align=center><B>' || 'PR类别' || '</B></td>');--15output('<td nowrap align=center><B>' || '来源需求类型' || '</B></td>');output('<td nowrap align=center><B>' || 'PL/SO编号' || '</B></td>');output('<td nowrap align=center><B>' || '母单号' || '</B></td>');output('<td nowrap align=center><B>' || 'PL/SO备注' || '</B></td>');output('<td nowrap align=center><B>' || '运输方式*' || '</B></td>');output('<td nowrap align=center><B>' || '区域/市场*' || '</B></td>');--20output('<td nowrap align=center><B>' || '区域仓库*' || '</B></td>');output('<td nowrap align=center><B>' || '接收子库*' || '</B></td>');output('<td nowrap align=center><B>' || '供应商可验货日期*' || '</B></td>');output('<td nowrap align=center><B>' || '供应商入仓日期*' || '</B></td>');output('<td nowrap align=center><B>' || '条码类型*' || '</B></td>');--25output('<td nowrap align=center><B>' || 'Asins/UPC*' || '</B></td>');output('<td nowrap align=center><B>' || 'MSKU*' || '</B></td>');output('<td nowrap align=center><B>' || '条码*' || '</B></td>');output('<td nowrap align=center><B>' || '条码编译语言' || '</B></td>');output('<td nowrap align=center><B>' || '是否贴防伪贴纸' || '</B></td>');--30output('<td nowrap align=center><B>' || '应交延迟原因*' || '</B></td>');output('<td nowrap align=center><B>' || '评审不准原因' || '</B></td>');output('<td nowrap align=center><B>' || '定制信息' || '</B></td>');output('<td nowrap align=center><B>' || '发运行备注*' || '</B></td>');output('<td nowrap align=center><B>' || '质检日期' || '</B></td>');--35output('<td nowrap align=center><B>' || '质检结果' || '</B></td>');output('<td nowrap align=center><B>' || '要求到接收子仓日期*' || '</B></td>');output('<td nowrap align=center><B>' || '要求到货日期*' || '</B></td>');output('<td nowrap align=center><B>' || '首次供应商回复日期' || '</B></td>');output('<td nowrap align=center><B>' || '接收入库数量' || '</B></td>');--40output('<td nowrap align=center><B>' || '是否已入库' || '</B></td>');output('<td nowrap align=center><B>' || 'LeadTime时间' || '</B></td>');output('<td nowrap align=center><B>' || '后处理期' || '</B></td>');output('<td nowrap align=center><B>' || '是否已对账' || '</B></td>');output('<td nowrap align=center><B>' || 'ERP入仓日期' || '</B></td>');--45output('<td nowrap align=center><B>' || '整箱数' || '</B></td>');output('<td nowrap align=center><B>' || '是否整箱数控制' || '</B></td>');output('<td nowrap align=center><B>' || '延迟原因备注' || '</B></td>');output('<td nowrap align=center><B>' || '拆分批次' || '</B></td>');output('<td nowrap align=center><B>' || '拆分日期' || '</B></td>');--50output('<td nowrap align=center><B>' || '是否取消' || '</B></td>');output('<td nowrap align=center><B>' || '是否MPS' || '</B></td>');output('<td nowrap align=center><B>' || '收货日期' || '</B></td>');output('<td nowrap align=center><B>' || '是否外销' || '</B></td>'); --add by wen 20211025 for RE20210906005--add by wen 20211207 for 109718 start --output('<td nowrap align=center><B>' || '彩盒条码标签' || '</B></td>');output('<td nowrap align=center><B>' || '彩盒特殊标签' || '</B></td>');output('<td nowrap align=center><B>' || '内外箱标签' || '</B></td>');--add by wen 20211207 for 109718 end --output('</tr>');END print_header;/* ====================================================================*   PROCEDURE: main**   DESCRIPTION: 主程序**   PARAMS:*              p_vendor_id             供应商po_create_f             PO创建日期自,po_create_t             PO创建日期至,p_agent_id              采购员,p_vendor_check_date_f   供应商可验货日期自,p_vendor_check_date_t   供应商可验货日期至,p_vendor_receive_date_f 供应商入仓日期自,p_vendor_receive_date_t 供应商入仓日期至,p_req_delivery_date_f   要求到接收子仓日期自,p_req_delivery_date_t   要求到接收子仓日期至,p_receive_date_f        收货日期自,p_receive_date_t        收货日期至,p_receive_status        是否已入库*   HISTORY:*     1.00   2021/01/19     xxxxxx   Creation  RE20201209001* =====================================================================*/PROCEDURE main(retcode                 OUT VARCHAR2,errbuf                  OUT VARCHAR2,p_vendor_id             IN NUMBER,po_create_f             IN VARCHAR2,po_create_t             IN VARCHAR2,p_agent_id              IN NUMBER,p_vendor_check_date_f   IN VARCHAR2,p_vendor_check_date_t   IN VARCHAR2,p_vendor_receive_date_f IN VARCHAR2,p_vendor_receive_date_t IN VARCHAR2,p_req_delivery_date_f   IN VARCHAR2,p_req_delivery_date_t   IN VARCHAR2,p_receive_date_f        IN VARCHAR2,p_receive_date_t        IN VARCHAR2,p_receive_status        IN VARCHAR2,p_cancel_flag           IN VARCHAR2) ISCURSOR csr_main ISSELECT cdv.ou_name, --业务实体cdv.po_number, --采购订单cdv.shipment_display_num, --PO号-行号-发运行号cdv.creation_date, --PO创建日期cdv.agent_name, --采购员cdv.create_user_name, --订单创建者cdv.pinxian, --品线cdv.vendor_number, --供应商编号cdv.vendor_name, --供应商名称cdv.vendor_site_code, --供应商地点编号cdv.make_country, --生产国cdv.item_number, --物料编码cdv.item_desc, --物料描述cdv.category_desc, --物料类别cdv.line_quantity, --行数量cdv.quantity, --发运行数量cdv.currency_code, --币种cdv.item_mini, --item_minicdv.req_type, --PR类别cdv.sr_order_type, --来源需求类型cdv.req_number, --PR编码cdv.sopl_number, --PL/SO编号cdv.primeval_order_number, --母单号cdv.sopl_comments, --PL/SO备注cdv.region_desc, --区域/市场*cdv.region_org_code, --区域仓库*cdv.shipment_method_desc, --运输方式*cdv.receive_subinventory_code, --接收子库*cdv.quantity_received, --接收入库数量cdv.qa_result_desc, --质检结果cdv.need_by_date, --要求到货日期*cdv.actual_qa_date, --质检日期cdv.vendor_available_check_date, --供应商可验货日期自cdv.vendor_receive_date, --供应商入仓日期自cdv.asins_msg, --Asins/UPCcdv.asins_br_code_type, --条码类型cdv.asins_msku, --MSKUcdv.asins_br_code, --条码cdv.barcode_to_supplier, --条码编译语言cdv.anti_fake_sticker_flag, --是否贴防伪贴纸cdv.lead_time, --LeadTime时间cdv.adjust_days, --后处理时间--cdv.air_ship_reason_name,cdv.delay_delivery_desc, --应交延迟原因cdv.review_delay_desc, --评审不准原因cdv.special_info, --定制信息cdv.shipment_comments, --发运行备注cdv.po_receive_status, --是否已入库--cdv.oms_status,--cdv.bind_status,cdv.marked_flag, --是否已对账--cdv.compare_status,--cdv.compare_status_desc,--cdv.po_status,--cdv.srm_approve_status,--cdv.srm_status_desc,--cdv.qc_doc_number,cdv.req_delivery_date, --要求到接收子仓日期cdv.promised_date, --要求到货日期cdv.erp_receive_date, --ERP入仓日期--cdv.product_code,cdv.fixed_lot_multiplier, --整箱数cdv.fixed_lot_flag_dsp, --是否整箱数控制--cdv.certification_comments,--cdv.shipment_available_check_date,--cdv.lt_delay_reason_desc,cdv.delay_comments, --延迟原因备注cdv.split_line_location_num, --拆分批次--cdv.split_line_location_id,cdv.split_date, --拆分日期--cdv.manufacturer_sku,--cdv.manufacturer,--cdv.assembly_item_number,--cdv.assembly_order_number,--cdv.assembly_name,--cdv.line_comments,--cdv.vendor_comments,-- cdv.vendor_submit_date,cdv.cancel_flag_desc, --是否取消--cdv.materials_need_by_date,cdv.po_mps_flag_desc, --是否MPScdv.receive_date, --收货日期cdv.area_flag_dsp, --是否外销 add by wen 20211025 for RE20210906005cdv.color_barcode_lab, --add by wen 20211207 for 109718cdv.color_special_lab, --add by wen 20211207 for 109718cdv.inouter_box_lab --add by wen 20211207 for 109718FROM cux_po_display_v cdvWHERE EXISTS (SELECT 1FROM fnd_flex_value_sets ffvs,fnd_flex_values_vl  ffvv,per_all_people_f    ppf,fnd_flex_value_sets ffvs_par,fnd_flex_values_vl  ffvv_par,fnd_user            fuWHERE ffvs.flex_value_set_id = ffvv.flex_value_set_idAND ffvs.flex_value_set_name = 'OCE_PO_Buyer'AND ffvv.enabled_flag = 'Y'AND ffvs_par.flex_value_set_id = ffvv_par.flex_value_set_idAND ffvs_par.flex_value_set_name = 'OCEANWING_Product'AND ffvv_par.flex_value = ffvv.parent_flex_value_lowAND ffvv_par.description = ppf.last_nameAND trunc(SYSDATE) BETWEEN ppf.effective_start_date AND ppf.effective_end_dateAND ffvv.flex_value = fu.user_nameAND ppf.person_id = cdv.agent_idAND fu.user_id = fnd_global.user_id)--供应商AND cdv.vendor_id = nvl(p_vendor_id,cdv.vendor_id)--PO创建日期AND (cdv.creation_date >= fnd_conc_date.string_to_date(po_create_f) OR po_create_f IS NULL)AND (cdv.creation_date <= fnd_conc_date.string_to_date(po_create_t) OR po_create_t IS NULL)--采购员AND cdv.agent_id = nvl(p_agent_id,cdv.agent_id)--供应商可验货日期AND (cdv.vendor_available_check_date >= fnd_conc_date.string_to_date(p_vendor_check_date_f) OR p_vendor_check_date_f IS NULL)AND (cdv.vendor_available_check_date <= fnd_conc_date.string_to_date(p_vendor_check_date_t) OR p_vendor_check_date_t IS NULL)--供应商入仓日期AND (cdv.vendor_receive_date >= fnd_conc_date.string_to_date(p_vendor_receive_date_f) OR p_vendor_receive_date_f IS NULL)AND (cdv.vendor_receive_date <= fnd_conc_date.string_to_date(p_vendor_receive_date_t) OR p_vendor_receive_date_t IS NULL)--要求到接收子仓日期AND (cdv.req_delivery_date >= fnd_conc_date.string_to_date(p_req_delivery_date_f) OR p_req_delivery_date_f IS NULL)AND (cdv.req_delivery_date <= fnd_conc_date.string_to_date(p_req_delivery_date_t) OR p_req_delivery_date_t IS NULL)--收货日期AND (cdv.receive_date >= fnd_conc_date.string_to_date(p_receive_date_f) OR p_receive_date_f IS NULL)AND (cdv.receive_date <= fnd_conc_date.string_to_date(p_receive_date_t) OR p_receive_date_t IS NULL)--是否已入库AND cdv.po_receive_status = nvl(p_receive_status,cdv.po_receive_status)AND cdv.cancel_flag = nvl(p_cancel_flag,cdv.cancel_flag) --add by wen 20210713 for RE20210712001ORDER BY cdv.po_number;BEGINretcode := 0;---============================开始输出=============================--output('<HTML xmlns:v="urn:schemas-microsoft-com:vml"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel">');output('<head> <meta http-equiv="Content-Type" content="text/html; charset="' || g_charset || '">');output('<title>' || g_report_title || '</title>');output('<STYLE>BODY{background-color:#FFFFFF;font-family:Verdana;font-size:10pt;color:Black;}TR,TD{font-family:Verdana;font-size:10pt;color:Black;}.numberx{mso-number-format:"\@";text-decoration:none;}.amount{mso-number-format:"\#,##0.00";text-decoration:none;}.date{mso-number-format:"YYYY-MM-DD HH:MM:SS";text-decoration:none;}</STYLE>');output('</head>');output('<body>');output('<table width="100%">');output('<tr>');output('<td colspan=18 align="center"><font size="5">' || g_report_title || '</font></td>');output('</tr>');output('</table>');output('<table width="100%" border="1" cellspacing="0" cellpadding="2"style="BORDER-COLLAPSE:collapse"bordercolorlight="#000000" bordercolordark="#000000"id="table1">');print_header;FOR rec IN csr_mainLOOPoutput('<tr>');output('<td nowrap class="numberx">' || rec.ou_name || '</td>');output('<td nowrap>' || rec.po_number || '</td>');output('<td nowrap>' || rec.vendor_number || '</td>');output('<td nowrap>' || rec.vendor_site_code || '</td>');output('<td nowrap>' || rec.make_country || '</td>');--5output('<td nowrap>' || to_char(rec.creation_date,g_data_format_time) || '</td>');output('<td nowrap>' || rec.agent_name || '</td>');output('<td nowrap>' || rec.create_user_name || '</td>');output('<td nowrap class="numberx">' || rec.item_number || '</td>');output('<td nowrap>' || rec.item_mini || '</td>');--10output('<td nowrap>' || rec.line_quantity || '</td>');output('<td nowrap>' || rec.shipment_display_num || '</td>');output('<td nowrap>' || rec.quantity || '</td>');output('<td nowrap>' || rec.req_number || '</td>');output('<td nowrap>' || rec.req_type || '</td>');--15output('<td nowrap>' || rec.sr_order_type || '</td>');output('<td nowrap>' || rec.sopl_number || '</td>');output('<td nowrap>' || rec.primeval_order_number || '</td>');output('<td nowrap>' || rec.sopl_comments || '</td>');output('<td nowrap>' || rec.shipment_method_desc || '</td>');output('<td nowrap>' || rec.region_desc || '</td>');--20output('<td nowrap>' || rec.region_org_code || '</td>');output('<td nowrap>' || rec.receive_subinventory_code || '</td>');output('<td nowrap>' || to_char(rec.vendor_available_check_date,g_data_format) || '</td>');output('<td nowrap>' || to_char(rec.vendor_receive_date,g_data_format) || '</td>');output('<td nowrap>' || rec.asins_br_code_type || '</td>');--25output('<td nowrap>' || rec.asins_msg || '</td>');output('<td nowrap>' || rec.asins_msku || '</td>');output('<td nowrap>' || rec.asins_br_code || '</td>');output('<td nowrap>' || rec.barcode_to_supplier || '</td>');output('<td nowrap>' || rec.anti_fake_sticker_flag || '</td>');--30output('<td nowrap>' || rec.delay_delivery_desc || '</td>');output('<td nowrap>' || rec.review_delay_desc || '</td>');output('<td nowrap>' || rec.special_info || '</td>');output('<td nowrap>' || rec.shipment_comments || '</td>');output('<td nowrap>' || to_char(rec.actual_qa_date,g_data_format) || '</td>');--35output('<td nowrap>' || rec.qa_result_desc || '</td>');output('<td nowrap>' || to_char(rec.req_delivery_date,g_data_format) || '</td>');output('<td nowrap>' || to_char(rec.promised_date,g_data_format) || '</td>');output('<td nowrap>' || to_char(rec.need_by_date,g_data_format) || '</td>');output('<td nowrap>' || rec.quantity_received || '</td>');--40output('<td nowrap>' || rec.po_receive_status || '</td>');output('<td nowrap>' || rec.lead_time || '</td>');output('<td nowrap>' || rec.adjust_days || '</td>');output('<td nowrap>' || rec.marked_flag || '</td>');output('<td nowrap>' || to_char(rec.erp_receive_date,g_data_format) || '</td>');--45output('<td nowrap>' || rec.fixed_lot_multiplier || '</td>');output('<td nowrap>' || rec.fixed_lot_flag_dsp || '</td>');output('<td nowrap>' || rec.delay_comments || '</td>');output('<td nowrap>' || rec.split_line_location_num || '</td>');output('<td nowrap>' || to_char(rec.split_date,g_data_format) || '</td>');--50output('<td nowrap>' || rec.cancel_flag_desc || '</td>');output('<td nowrap>' || rec.po_mps_flag_desc || '</td>');output('<td nowrap>' || to_char(rec.receive_date,g_data_format) || '</td>');output('<td nowrap>' || rec.area_flag_dsp || '</td>'); --add by wen 20211025 for RE20210906005output('<td nowrap>' || rec.color_barcode_lab || '</td>');output('<td nowrap>' || rec.color_special_lab || '</td>');output('<td nowrap>' || rec.inouter_box_lab || '</td>');output('</tr>');END LOOP;output('</table>');output('</html>');EXCEPTIONWHEN fnd_api.g_exc_error THENretcode := '1';errbuf  := SQLERRM;WHEN fnd_api.g_exc_unexpected_error THENretcode := '2';errbuf  := SQLERRM;WHEN OTHERS THENretcode := '2';errbuf  := SQLERRM;END main;

3、plsql+html输出

这种方式不需要定义模板,可在package中直接定义表的标题,然后输出行,html方便做单元格合并,还可以自由的定义单元格的颜色,比较灵活。

参考package模板:https://download.csdn.net/download/m0_67158898/86509577

报表要求:

HTML单元格的请自行百度,下面贴一下部分代码案例:

PROCEDURE output_html_line_1(p_str In Varchar2) isBeginoutput('<td nowrap align=center colspan="16"><B>' || p_str ||'</B></td>');End output_html_line_1;PROCEDURE output_html_line_2 isBeginoutput('<td nowrap align=center rowspan="2"><B>初始工程量</B></td>');output('<td nowrap align=center rowspan="2"><B>初始投资额</B></td>');output('<td nowrap align=center rowspan="2"><B>调整工程量</B></td>');output('<td nowrap align=center rowspan="2"><B>调整投资额</B></td>');output('<td nowrap align=center rowspan="2"><B>最终工程量</B></td>');output('<td nowrap align=center rowspan="2"><B>最终投资额</B></td>');output('<td nowrap align=center><B>工作完成量</B></td>');output('<td nowrap align=center><B>完成投资额(万元)</B></td>');output('<td nowrap align=center><B>工作完成量</B></td>');output('<td nowrap align=center><B>完成投资额(万元)</B></td>');output('<td nowrap align=center rowspan="2"><B>XX成立以来累计的工程量(期初)</B></td>');output('<td nowrap align=center rowspan="2"><B>XX成立以来累计的投资额(期初)</B></td>');output('<td nowrap align=center rowspan="2"><B>XX成立以来累计的工程量</B></td>');output('<td nowrap align=center rowspan="2"><B>XX成立以来累计的投资额</B></td>');output('<td nowrap align=center colspan="2"><B>总计</B></td>');End output_html_line_2;PROCEDURE output_html_line_3 isBeginoutput('<td nowrap align=center colspan="2"><B>本期间</B></td>');output('<td nowrap align=center colspan="2"><B>本财年</B></td>');output('<td nowrap align=center><B>工程量</B></td>');output('<td nowrap align=center><B>完成投资额(万元)</B></td>');End output_html_line_3;PROCEDURE output_data_line(p_id IN NUMBER) isCursor cur_data(P_ORG_CODE In Varchar2) Isselect 100 qty1,100 qty2,100 qty3,100 qty4,100 qty5,100 qty6,100 qty7,100 qty8,100 qty9,100 qty10,100 qty11,100 qty12,100 qty13,100 qty14,100 qty15,100 qty16from dual;BEGINFOR rec_org IN cur_org LOOPfor rec_data in cur_data(rec_org.ORG_CODE) loopoutput('<td nowrap>' || rec_data.qty1 || '</td>');output('<td nowrap>' || rec_data.qty2 || '</td>');output('<td nowrap>' || rec_data.qty3 || '</td>');output('<td nowrap>' || rec_data.qty4 || '</td>');output('<td nowrap>' || rec_data.qty5 || '</td>');output('<td nowrap>' || rec_data.qty6 || '</td>');output('<td nowrap>' || rec_data.qty7 || '</td>');output('<td nowrap>' || rec_data.qty8 || '</td>');output('<td nowrap>' || rec_data.qty9 || '</td>');output('<td nowrap>' || rec_data.qty10 || '</td>');output('<td nowrap>' || rec_data.qty11 || '</td>');output('<td nowrap>' || rec_data.qty12 || '</td>');output('<td nowrap>' || rec_data.qty13 || '</td>');output('<td nowrap>' || rec_data.qty14 || '</td>');output('<td nowrap>' || rec_data.qty15 || '</td>');output('<td nowrap>' || rec_data.qty16 || '</td>');end loop;end loop;END output_data_line;PROCEDURE main(retcode OUT VARCHAR2, errbuf OUT VARCHAR2, p_id IN NUMBER) IScursor cur_TYPE isSelect FLV.MEANING type, Flv.TAG Uomfrom CUX_FND_LOOKUP_VALUES FLVWHERE FLV.LOOKUP_TYPE = 'CUX_PM_PRO_IMAG_PROGRESS_CLASS';l_line_num Number := 0;BEGINretcode := 0;---============================开始输出=============================--output('<HTML xmlns:v="urn:schemas-microsoft-com:vml"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel">');output('<head> <meta http-equiv="Content-Type" content="text/html; charset="' ||g_charset || '">');output('<title>' || g_report_title || '</title>');output('<STYLE>BODY{background-color:#FFFFFF;font-family:Verdana;font-size:10pt;color:Black;}TR,TD{font-family:Verdana;font-size:10pt;color:Black;}.numberx{mso-number-format:"\@";text-decoration:none;}.amount{mso-number-format:"\#,##0.00";text-decoration:none;}.date{mso-number-format:"YYYY-MM-DD HH:MM:SS";text-decoration:none;}</STYLE>');output('</head>');output('<body>');output('<table width="100%">');output('<tr>');output('<td colspan=18 align="center"><font size="5">' ||g_report_title || '</font></td>');output('</tr>');output('</table>');output('<table width="100%" border="1" cellspacing="0" cellpadding="2"style="BORDER-COLLAPSE:collapse"bordercolorlight="#000000" bordercolordark="#000000"id="table1">');--第一行 output('<tr>');output('<td nowrap align=center rowspan="2" colspan="3"><B></B></td>');FOR REC IN cur_org LOOPoutput_html_line_1(p_str => REC.org_NAME);END LOOP;output('</tr>');--第二行  output('<tr>');FOR REC IN cur_org LOOPoutput_html_line_2;END LOOP;output('</tr>');--第三行  output('<tr>');output('<td nowrap align=center><B>行号</B></td>');output('<td nowrap align=center><B>类型</B></td>');output('<td nowrap align=center><B>单位</B></td>');FOR REC IN cur_org LOOPoutput_html_line_3;END LOOP;output('</tr>');--数据行FOR REC IN cur_TYPE LOOPl_line_num := l_line_num + 1;output('<tr>');output('<td nowrap>' || l_line_num || '</td>');output('<td nowrap>' || rec.type || '</td>');output('<td nowrap>' || rec.uom || '</td>');output_data_line(p_id => p_id);output('</tr>');END LOOP;output('</table>');output('</html>');EXCEPTIONWHEN fnd_api.g_exc_error THENretcode := '1';errbuf  := SQLERRM;WHEN fnd_api.g_exc_unexpected_error THENretcode := '2';errbuf  := SQLERRM;WHEN OTHERS THENretcode := '2';errbuf  := SQLERRM;END;

最终输出结果:

EBS R12输出Excel报表的几种方式相关推荐

  1. Flask后端实践 连载十三 Flask输出Excel报表

    Flask后端实践 连载十三 Flask输出Excel报表 tips: 简单实现Flask输出Excel报表 本文基于python3编写 代码仓库 项目场景 由于项目是工程上的使用,不仅需要对采集的数 ...

  2. C#读取Excel数据的几种方式(包含大量数据读取)

    C#读取Excel数据的几种方式(包含大量数据读取) C#读取Excel数据的几种方式(包含大量数据读取) OleDB方式 COM组件的方式 NPOI方式读取(此处未测试,参考其他博文) 常用的Exc ...

  3. 制作Excel表头的6种方式如分项表头 双线复合表头等等

    作为上班族都知道对于做表格来说最麻烦的就是搭建表头 教你几招,让你对做表格这件事儿信手拈来晋升为令人羡慕的"表姐.表哥",有需要的朋友可以尝试操作下. 1.如何制作分项表头 2.如 ...

  4. EBS 请求输出Html报表集成Echarts

    百度开源的ECharts有样式丰富且美观的报表类型可供选用,可以将其集成至EBS请求输出的Html报表中,这其实就是一个生成Html数据的过程. 定义输出类型为HTML的请求我就不在此处赘述. 我们以 ...

  5. java excel生成_两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  6. plsql导出表结构到excel_plsql 将表结构导出到excel中的两种方式

    1.情景展示 如何将表结构导出到excel中(不是建表的SQL语句),如何实现? 2.方式一 新建一个SQL窗口,输入要导出结构的表,选中右键-->描述 右键-->导出-->CSV文 ...

  7. 简单的Excel导出(两种方式)

    最近项目里面有个周报Excel导出的功能,为了解决这个问题,我显示调研Excel内核的方式实现了,但是被告知该方法有诸多弊端(1.服务器需要装相应版本的Excel:2.如果程序中途出错服务器会有很多E ...

  8. log4j控制日志输出文件名称的两种方式

    1. 第一种方式 在类对象中用如下方式定义logger变量 private static Logger logger = Logger.getLogger("lemmaXml"); ...

  9. layui导出Excel功能的两种方式的尝试

    第一种方式 利用layui自带的导出功能:在layui文档中有例子和代码 网址:https://www.layui.com/demo/table/parseData.html 只需要在前端界面加入to ...

最新文章

  1. Smalidea+IntelliJ IDEA/Android Studio动态调试安卓app教程
  2. 自定义类加载器_jvm超详细探索自定义类加载器(值得收藏)
  3. python的类程序的结构_python(8)---程序结构
  4. 让nginx支持thinkphp rewrite模式
  5. jpg png webp_为在线图像删除PNG和JPG:使用WebP
  6. ubuntu下rar文件解压后文件名乱码
  7. SQL查询语句基本练习
  8. 通过cURL获取web页面及http header信息
  9. 启动dubbo-admin遇到的那些坑
  10. PPT教程 从入门到实践
  11. 配置NodeJS免安装环境变量,win7,win10
  12. python中的引号用法总结_Python中的引号用法总结
  13. 8-08双重循环--九九乘法表
  14. 14位科技圈大V评说戴尔科技峰会
  15. 魅族的云相册能克隆到华为手机吗_魅族云服务如何导出导入 换手机flyme云导出相册...
  16. 最浅显易懂的Javascript 中的slice和splice
  17. 如何在App中实现朋友圈功能之六快速实现下拉加载朋友圈功能——箭扣科技Arrownock
  18. 滴滴自动驾驶网约车落地上海,而这些中国公司早已拿到美国Robotaxi牌照
  19. starccm+电池包热管理-新能源汽车电池包共轭传热仿真
  20. Android Studio 开发

热门文章

  1. VS中输入字符串和输出字符串问题
  2. android的ios11,IOS11更新,Android又笑了!
  3. FTP主动被动介绍,相关协议整理
  4. 公务员考试在即,公务员礼仪具体需要注意哪些?
  5. Windows将系统挂载的sata硬盘识别为USB设备的解决方法
  6. [转帖]GNU/Linux与开源文化的那些人和事
  7. 【软件分析】Tai-e实验代码理解与踩坑记录
  8. _vsnprintf函数的简介和用法
  9. LiquiBase笔记
  10. 开放API接口安全设计