یکی از نیازهای اصلی کاربران در برنامههای سازمانی، امکان دریافت خروجی اکسل (Excel Export) از دادههای موجود است. هرچند که در Interactive Report و Interactive Grid در APEX قابلیت Download to Excel وجود دارد، اما این قابلیت محدود بوده و اجازهی سفارشیسازیهایی مثل افزودن لوگو، هدر و فوتر یا اعمال هایلایت شرطی را نمیدهد.
برای رفع این محدودیت، اوراکل پکیج قدرتمند APEX_DATA_EXPORT را ارائه کرده که امکان ایجاد خروجیهای سفارشی در Oracle APEX را فراهم میکند.
معماری APEX_DATA_EXPORT
این پکیج با دو بخش اصلی کار میکند:
- Context:نشاندهنده منبع داده است و با اجرای
apex_exec.open_query_contextتعریف میشود - Export & Download : ایجاد فایل خروجی با apex_data_export.export و تحویل آن به کاربر با apex_data_export.download
مراحل پیادهسازی در APEX
- ایجاد یک دکمه روی صفحه (مثلا BTN_EXPORT)
- تعریف Dynamic Action یا Process: روی این دکمه یک Dynamic Action ایجاد کرده و نوع آن را Execute PL/SQL Code قرار دهید.
- نمونه کد PL/SQL
کد شامل بخش های زیر است:
- تعریف متغیرها
- تعریف قوانین هایلایت
- اجرای Query با استفاده از APEX_EXEC
- تولید خروجی اکسل
- دانلود فایل
- مدیریت خطاها

تعریف متغیرها

- l_highlights : ساختار دادهای برای نگهداری قوانین هایلایت (تغییر رنگ متن یا پسزمینه هنگام اکسپورت).
- l_context : شیء context که نتیجه اجرای SQL query از طریق
apex_execرا مدیریت میکند. - l_export : ساختار دادهای که خروجی نهاییPDF، Excel، CSV و غیره را نگه میدارد.
این تعاریف پایهی فرآیند Export هستند و از طریق آنها Oracle APEX میتواند دادهها و قوانین نمایشی را مدیریت کند.
افزودن یک قانون هایلایت

این بخش به l_highlights یک قانون هایلایت اضافه میکند:
- p_id = 1 : شناسه قانون.p_value_column = HIGHLIGHT1: ستونی که مشخص میکند آیا باید هایلایت شود یا نه.p_display_column = SAL: ستونی که باید هایلایت شود.
p_text_color = #FF0000: اگر شرط برقرار باشد، رنگ متن ستون SAL قرمز خواهد شد.
باز کردن context اجرای SQL

یک query روی جدول EMP اجرا می شود
- ستونها: empno, ename, sal
- ستون مجازی HIGHLIGHT1: اگر sal >= 3000 باشد مقدارش 1 است، در غیر این صورت NULL.
دادهها در l_context نگهداری میشوند و مستقیماً برای ایجاد فایل خروجی (Export) قابل استفاده هستند.
تولید فایل خروجی

- دادههای (query (
l_contextبا قوانین هایلایت (l_highlights) به یک فایل خروجی تبدیل میشود. - p_format = xlsx : فرمت خروجی اکسل است.
- نتیجه در
l_exportذخیره میشود.
بستن context

بعد از اجرای Query لازم است context را ببندیم تا حافظه و منابع آزاد شوند.
دانلود فایل خروجی

فایل اکسل تولیدشده در نهایت برای کاربر ارسال میشود تا بتواند آن را دانلود کند.
مدیریت خطا

در صورت بروز هرگونه خطا، ابتدا context بسته میشود و سپس خطا دوباره raise میگردد تا اطلاعات آن از دست نرود.
خلاصه عملکرد کد:
- اجرای یک query روی EMP.
- تعیین شرط هایلایت:اگر مقدار حقوق (SAL) برابر یا بیشتر از ۳۰۰۰ باشد، ستون SAL با رنگ قرمز در فایل اکسل نمایش داده میشود.
- تولید فایل اکسل و دانلود آن برای کاربر.
- مدیریت خطا و آزادسازی منابع.
قابلیت ها
- گروهبندی ستونها با
apex_data_export.add_column_group - تغییر عنوان ستونها با
apex_data_export.add_column - چندین شرط هایلایت برای رنگبندی سلولها
- تغییر فرمت خروجی به PDF فقط با تغییر
p_format => apex_data_export.c_format_pdf
مزایای استفاده از این روش
- انعطافپذیری بالا: امکان تعریف قوانین هایلایت پیچیده.
- یکپارچگی: مستقیماً از موتور APEX بدون نیاز به ابزار جانبی.
- پشتیبانی از فرمتهای متنوع: PDF، Excel، CSV، HTML.
- کنترل کامل بر query : استفاده از APEX_EXEC برای مدیریت دادهها.
برای یادگیری جامع و گامبهگام تمامی مفاهیم، پیشنهاد میکنیم به دوره آموزش مقدماتی اوراکل APEX مراجعه کنید و از پایه تا سطح پیشرفته با این پلتفرم قدرتمند آشنا شوید.
