آموزش دونه:مرجع آموزش

گزارش گیری در جاوا (Java Reports) آموزش برنامه نویسی جاوا Java

Java Reports

JasperReports:

Java Reports

JasperReports ابزاری متن باز و مبتنی بر جاوا برای تهیه انواع گزارش است که از آن در هر جایی که نیاز به گزارش گیری باشد می توان استفاده کرد (برنامه دسکتاپی ، تحت وب و …).

JasperReporst مبتنی بر جاواست  و یادگیری زبان یا الگوی خاصی را به شما تحمیل نمی کند و استفاده از آن بسیار ساده است.

در حقیقت JasperReoprts یک کتابخانه جاوایی است که ابزار های لازم برای تهیه گزارش را در اختیار شما قرار می دهد.

JfreeChart:

Java Reports

JFreeChart کتباخانه رایگان جاوایی است که با استفاده از آن می توانید انواع نمودار های مختلف (مانند نمودار های میله ای ، دایره ای و …) را به صورت دو بعدی یا سه بعدی ایجاد کنید. ترکیب JasperReporst با JFreeChart گزارش های بسیار زیبایی را ایجاد می کند.

 

آشنایی سریع با نحوه ساخت گزارش با JasperReports:

Java Reports

فرآیند ساخت گزارش با استفاده از JasperReports از چهار قسمت تشکیل شده است :

  1. طراحی : این مرحله شامل ساخت فایل JRXML (فایلی با پسوند jrxml. و با ساختار xml) است که قالب و شکل کلی گزارش را مشخص می کند.
  2. کامپایل : این مرحله شامل تبدیل فایل jrxml. به فایلی با پسوند jasper. است.هنگامی که برنامه ای طراحی می کنید فایل های با پسوند jasper. فایل هایی هستند که برای اجرای صحیح گزارش ها به آن ها نیاز دارید.(پس از کامپیال کردن فایل های jrxml. به jasper. مشتری نیازی به فایل های jrxml. نخواهد داشت ).
  3. اجرا : در این مرحله قالب کامپایل شده گزارش با داده های برنامه پر می شود.
  4. خروجی : در این مرحله می توانیم خروجی دلخواه خود را از گزارش تهیه کنیم. خروجی می تواند pdf یا xml یا HTML یا … باشد که در ادامه به انواع خروجی قابل تهیه اشاره خواهیم کرد.

آغاز به کار :

Java Reports

بهتر است دست به کار شویم. یک پوشه خالی به نام safecompreport در هر جایی از کامپیوترتان که دوست دارید ایجاد کنید.

در داخل پوشه safecompreport پوشه جدیدی به نام jasper ایجاد کنید.

JasperReports را از حالت فشرده خارج کنید و پوشه های lib و dist را در داخل پوشه jasper که در پوشه safecompreport ایجاد کردید کپی کنید.

در داخل پوشه safecompreport فایل جدیدی به نام base.xml ایجاد می کنیم که این فایل حاوی دستورات ant برای کامپایل برنامه های جاوایی است( به همراه پاک سازی).اگر با دستورات ant آشنایی داشته باشید درک این فایل بسیار ساده است.

 

طراحی :

Java Reports

همانطور که قبلاً اشاره کردم اولین مرحله در ساخت گزارش مرحله طراحی است. در این مرحله یه فایل با پسوند jrxml. ایجاد می کنیم که حاوی شکل کلی گزارش است.در ادامه کم کم با ساختار این فایل آشنا خواهیم شد.

گزارش چیست؟

Java Reports

قبل از اینکه فایل jrxml. مورد نظرمان را ایجاد کنیم بهتر است بیشتر با مفهوم گزارش آشنا شویم.

یک گزارش نمایش دهنده اطلاعات معنا داری در قالب جداول ، نمودار ها و گراف هاست که این اطلاعات از منابع مختلف (معمولاً پایگاه داده) می آیند.

هیچ چیز پیچیده ای در کار نیست ، این قالب کلی یک گزارش است که بعداً می توان آن را به صورت pdf یا html یا … ذخیره نمود.

معمولاً یک گزارش از قسمت های زیر (که در عکس فوق نام برده شده اند) تشکیل شده است :

Tilte : شامل عنوان گزارش خواهد بود.

Page Header : سر صفحه ، معمولاً اطلاعات مروبط به شرکت ، سازمان و … در این قسمت قرار داده می شود (هیچ الزامی در کار نیست).

Column Header : عنوان ستون ها ، اگر داده ها به صورت جدولی باشند معمولاً عنوان ستون ها را در این قسمت قرار می دهیم .

Detail 1 : شامل اطلاعات گزارش است

Column Footer : اطلاعات آخرین سطر جداول معمولاً در این قسمت قرار می گیرند (مثلاً جمع مقادیر ستون ها و …)

Page Footer : پا صفحه.

Summary : خلاصه گزارش.

توجه کنید که الزامی وجود ندارد که یک گزارش از تمام قسمت های فوق ایجاد شود ، بلکه هدف این است که با ساختار کلی یک گزارش آشنا شویم.

ساختار اولیه گزارش اینچنینی در قالب یک فایل با پسوند jrxml. به صورت زیر نمایش داده می شود :

 

همانطور که مشاهده می کنید این فایل یک فایل ساده xml است که از تگ های مختلف برای ایجاد بخش های مختلف در آن استفاده شده است. تگ jasperReport تگ ریشه (root) این فایل و الزامی است. ما بقی تگ ها (تگ های داخلی) اختیاری هستند.

برای اینکه بهتر با ساختار فایل های jrxml. آشنا شویم بهتر است دست به کار شویم و در قالب مثال بیشتر این ساختار را یاد بگیریم.

در داخل پوشه safecompreport فایل جدیدی به نام jasper_report_template.jrxml ایجاد می کنیم و در داخل این فایل کد زیر را می نویسیم :

 

همانطور که مشاهده می کنید در این مثال فقط تگ های columnHeader و detail1 را نگه داشته ام و مابقی تگ ها را حذف کردم. تگ detail1  نیز کاملاً خالی است.در داخل تگ columnHeader تگ جدیدی به نام band داریم ، این تگ فقط یک ناحیه را مشخص می کند که در این مثال ارتفاع این ناحیه برابر با ۲۳ است.

در داخل تگ band تگ دیگری به نام staticText مشاهده می کنیم که برای مشخص متن ثابت از آن استفاده می شود و البته در این مثال هیچ متنی به کار نرفته است.با استفاده از reportElement نیز یک ناحیه رنگی ایجاد کردیم.

 

مشاهده قالب در مرحله طراحی :

Java Reports

پیش نمایش قالب گزارش در طی فرآیند طراحی بسیار مفید خواهد بود ، برای پیش نمایش فایل های JRXML می توانیم از ابزار net.sf.jasperreports.view.JasperDesignViewer استفاده کنیم که برنامه ای مبتنی بر Swing و برای پیش نمایش گزارش هاست. برای استفاده از این برنامه به صورت زیر عمل می کنیم :

در داخل پوشه safecompreport فایل جدیدی به نام build.xml ایجاد می کنیم و در داخل آن کد زیر را می نویسیم :

همانطور که مشاهده می کنید یک target پیش فرض به نام viewJRXML ایجاد کردیم که filename را به عنوان پارامتر ورودی به برنامه net.sf.jasperreports.view.JasperDesignViewer می دهد ، توجه کنید که base.xml در ابتدای این فایل import شده است و filename به نام قالب گزارش (jasper_report_template) اشاره می کند.

کامپایل :

Java Reports

پس از طراحی قالب کلی گزارش نوبت به کامپایل فایل های jrxml. به فایل های jasper. می رسد.برای این کار دو راه حل وجود دارد :

  • یک کد جاوایی بنویسیم که مسئولیت کامپایل را به عهده بگیرد.
  • مستقیماً از دستورات ant استفاده کنیم .

در اینجا هر دو روش را بررسی می کنیم :

کامپیال با استفاده از یک برنامه جاوایی :

Java Reports

یک پوشه جدید به نام src در داخل پوشه safecompreport ایجاد می کنیم. در داخل پوشه src فایل جدیدی به نام CompileJRXML2Jasper.java ایجاد می کنیم و در داخل این فایل کد بسیار ساده زیر را می نویسیم :

این فایل مسیر قالب (فایل jrxml.) را گرفته و سپس آن را به فایل jasper. کامپایل می کند. برای اجرای این برنامه باید دستورات جدیدی به فایل build.xml اضافه کنیم. build.xml را به صورت زیر تغییر می دهیم و یک target جدید برای اجرای برنامه CompileJRXML2Jasper.java در آن تعریف می کنیم :

 

فایل های داخل پوشه src همگی کامپایل شده و پوشه classes ایجاد شده و سپس برنامه compileJRXML2Jasper.java اجرا شده و در نهایت فایل jasper_report_template.jasper در داخل پوشه safecompreport ایجاد می شود.(الآن آماده اید که به مرحله اجرا بروید).

کامپایل به صورت مستقیم با استفاده از دستورات ant :

Java Reports

برای کامپایل قالب های JRXML از طریق دستورات ant کتابخانه JasperReports دستور اختصاصی ant ای دارد که مخصوص این کار است.این دستور jrc نامیده می شود و با استفاده از کلاس net.sf.jasperreports.ant.JRAntCompileTask پیاده سازی شده است و نحوه استفاده از آن بسیار شبیه javac است.

قبل از ادامه این بخش بهتر است فایل jasper_report_template.jasper ساخته شده در مرحله قبل را پاک کنید.

فایل build.xml را به صورت زیر تغییر می دهیم :

 

همانطور که مشاهده می کنید اینبار یک target جدید به نام compilebyAnt تعریف کردیم که از دستور jrc استفاده می کند و تمام فایل های با پسوند jrxml. را به فایل های jasper. کامپایل می کند.

 

نکته : اگر فایل jrxml. در زمان اجرا ساخته شود (توسط یک برنامه خاص) آنگاه از روش مبتنی بر ant نمی توان استفاده کرد.

اجرا :

Java Reports

در مرحله قبل فایل طراحی (jrxml.) را کامپایل کردیم و الآن وقت آن رسیده که گزارش با داده های خودمان پر کنیم. JasperReports در زمینه منبع داده بسیار انعطاف پذیر است و انواع مختلفی از منابع را می توان برای آن در نظر گرفت ، انواع منابع مختلفی که برای تهیه گزارش در JasperReports می توان استفاده کرد عبارتند از :

  • SQL query : یک پرس و جوی مبتنی که بر sql که داده هایی را از پایگاه داده می خواند
  • xml : داده ها را می توان از یک فایل xml  نیز خواند.
  • CSV : داده ها ممکن است در یک فایل csv باشند.
  • HQL
  • Java Beans
  • و …

در اینجا برای سادگی مطلب از Java Beans استفاده می کنیم.

ابتدا یک فایل جدید به نام Person.java در پوشه src ایجاد می کنیم. این فایل نشان دهنده کلاسی برای نگه داری اطلاعات افراد است (شامل نام و نام خانوادگی و سن).

در داخل فایل Person.java کد زیر را می نویسیم :

 

در داخل پوشه src فایل دیگری به نام FillData.java ایجاد می کنیم ، این برنامه یک ArrayList از نوع Person ایجاد می کند سپس با فراخوانی متد createData مقداری داده در این لیست قرار می دهد.سپس با فراخوانی متد fillReport داده ها را در داخل گزارش می نویسد که نتیجه این عمل ساخت یک فایل جدید با پسوند jrprint. خواهد بود.

کد FillData.java  به صورت زیر خواهد بود :

برای اجرای برنامه FillData.java باید یک target جدید به build.xml اضافه کنیم. فایل build.xml را به صورت زیر تغییر می دهیم :

 

همانطور که می بینید target جدید به نام fillReport برنامه FillData.java را اجرا خواهد کرد.

 

فایل جدیدی به نام jasper_report_template.jrprint در داخل پوشه safecompreport ایجاد می شود.

خروجی :

Java Reports

قالب گزارش را طراحی کردیم ، کامپایل کردیم و سپس آن را با داده های مورد نظر پر کردیم ، نتیجه مراحل قبل یک فایل با پسوند jrprint. بود الآن آماده ایم تا از گزارشمان خروجی بگیریم .

خروجی در JasperReports بسیار انعطاف پذیر است و انواع مختلف خروجی اعم از XLS و HTML و PDF را می توانیم به عنوان خروجی تولید کنیم ولی شاید بد نباشد قبل از گرفتن خروجی فایل نهایی گزارش را یکبار مشاهده کنیم ، برای مشاهده گزارش نهایی می توانیم از ابزار JasperViewer استفاده کنیم. برای استفاده از JasperViewer یک target جدید به build.xml اضافه می کنیم (viewResult) :

 

همانطور که مشاهده می کنید وظیفه این target این است که برنامه net.sf.jasperreports.view.JasperViewer را اجرا کرده و نام فایل با پسوند jrprint. را به عنوان پارامتر به آن ارسال کند.

گرفتن خروجی :

Java Reports

الآن آماده ایم تا از گزارش خروجی بگیریم.می خواهیم در سه قالب متفاوت HTML و PDF و XLS خروجی بگیریم. برای اینکار فایل جدیدی به نام Export.java در داخل پوشه src ایجاد می کنیم و کد زیر را در داخل آن می نویسیم :

 

برای اجرای این برنامه یک target جدید به نام export به build.xml اضافه می کنیم :

 

برای اجرای Export.java از طریق خط فرمان به مسیر پوشه safecompreport می رویم و دستور ant export را اجرا می کنیم. سه فایل pdf_report.pdf و html_report.html و xls_report.xls ساخته می شوند که نشان دهنده گزارش هستند.

تا اینجا با چهار مرحله تهیه گزارش در JasperReports آشنا شدیم و توانستیم یک گزارش کامل ایجاد کنیم و خروجی بگیریم. در ادامه با JFreeChart آشنا می شویم.

JFreeChart :

Java Reports

JFreeChart کتابخانه قدرتمندی است که به ما اجازه رسم انواع نمودار های مختلف را می دهد و می توان به صورت جدا نیز از آن استفاده کرد (یعنی الزامی نیست که از JFreeChart حتماً به همراه JasperReports استفاده کنیم). در اینجا نمی توانیم به تفصیل به شرح این کتابخانه بپردازیم در عوض با چند مثال یاد می گیریم چگونه از آن استفاده کنیم.

قبل از ارائه مثل ها باید این کتابخانه را به برنامه اضافه کنیم. برای اینکار به صورت زیر عمل می کنیم :

  •  JFreeChart را از لینک ارائه شده در بالای مطلب دانلود می کنیم و در جایی از کامپیوترمان آن را از حالت فشرده خارج می کنیم.
  • در داخل پوشه safecompreport پوشه خالی جدیدی به نام jfreechart  ایجاد می کنیم.
  • به محلی که JFreeChart را از حالت فشرده خارج کرده ایم می رویم و پوشه lib را کپی می کنیم و کپی آن را در پوشه jfreechart که ایجاد کرده ایم قرار می دهیم.
  • فایل base.xml را به صورت زیر تغییر می دهیم تا فایل های JFreeChart نیز به برنامه اضافه شوند :

نمودار دایره ای :

Java Reports

در اولین مثال از این بخش می خواهیم یک نمودار دایره ای با استفاده از JFreeChart رسم کنیم و آن را در داخل گزارش قرار دهیم. اولین قدم این است که قالب گزارش (فایل jasper_report_template.jrxml) را به صورت زیر تغییر دهیم تا جایی برای تصویر در آن ایجاد کنیم :

 

اگر دقت کنید مشاهده می کنید که در بالای قالب گزارش یک parameter  نام firstChart از نوع java.awt.Image ایجاد کردیم که نشان دهنده این است که پارامتری از نوع تصویر از داخل برنامه به گزارش فرستاده می شود. سپس این تصویر را در بخش summary  نمایش می دهیم.

حال باید فایل FillData.java به گونه ای تغییر دهیم که یک نمودار دایره ای با استفاده از JFreeChart ایجاد کند و آن را با اسم firstChart در داخل گزارش قرار دهد. کد FillData.java به صورت زیر خواهد شد :

 

متد createFirstChart یک نمودار دایره ای ایجاد می کند و تصویر حاصل از آن را بر می گرداند. در این نمودار دایره چهار زبان برنامه نویسی اضافه کردیم و به هر کدام یک عدد اعشاری معادل درصد آن نسبت دادیم.با استفاده از خط زیر این تصویر را به عنوان پارامتر firstChart در داخل گزارش قرار می دهیم :

 

فایل ها را ذخیره می کنیم. از طریق خط فرمان به مسیر safecompreport می رویم ، ابتدا دستور ant compilebyAnt سپس دستور ant fillReport و سپس دستور ant viewResult را اجرا می کنیم.

نمودار میله ای :

Java Reports

قالب گزارش را به صورت زیر تغییر می دهیم :

فایل FillData.java را نیز به صورت زیر تغییر می دهیم تا یک نمودار میله ای نیز ایجاد کند :

Java Reports Java Reports Java Reports Java Reports Java Reports Java Reports Java Reports Java Reports

آموزش کامل زبان برنامه نویسی جاوا در برنامه اندرویدی ما:

دانلود نرم افزار اندرویدی آموزش  زبان برنامه نویسی جاوا 

مطالب مرتبط