تولید کلمه از قالب در جاوا

فرآیند تولید گزارش اغلب شامل پر کردن الگوهای سند از پیش تعریف شده است که حاوی مکان‌هایی برای فیلدهای مورد نظر است. موتورهای گزارش‌دهی، سند الگو را به عنوان ورودی می‌گیرند، جایگاه‌ها را با داده‌ها به صورت پویا پر می‌کنند و گزارش‌های حاصل را تولید می‌کنند. این مقاله همچنین یک مورد استفاده مشابه را نشان می دهد که در آن می توانید اسناد Word را با پر کردن قالب های Word به صورت پویا و برنامه نویسی با استفاده از جاوا تولید کنید.

برای تولید اسناد Word از الگوهای DOCX، از LINQ Reporting Engine ارائه شده توسط Aspose.Words for Java API استفاده خواهیم کرد. LINQ Reporting Engine از انواع تگ ها برای متن، تصاویر، لیست ها، جداول، لینک ها و نشانک ها برای قالب های Word پشتیبانی می کند. اسناد قالب حاوی این تگ ها توسط موتور با داده هایی که از اشیاء جاوا و همچنین منابع داده XML، JSON یا CSV می آیند، پر می شوند. بنابراین بیایید شروع به تولید اسناد Word از قالب ها با استفاده از جاوا کنیم.

این مقاله نحوه تولید سند Word از یک الگو را با استفاده از:

  • مقادیر از اشیاء جاوا،
  • منبع داده XML،
  • منبع داده JSON،
  • و منبع داده CSV.

نصب Aspose.Words برای جاوا - Word Automation and Report Generation API

می توانید Aspose.Words را برای جاوا JAR دانلود کنید یا با استفاده از تنظیمات زیر آن را به برنامه مبتنی بر Maven خود اضافه کنید.

مخزن:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

وابستگی:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>20.1</version>
    <type>pom</type>
</dependency>

با استفاده از آبجکت های جاوا، اسناد Word را از قالب ایجاد کنید

برای شروع تولید گزارش، اجازه دهید ابتدا با پر کردن الگو با مقادیری از اشیاء جاوا، یک سند Word ایجاد کنیم. برای تعریف یک الگوی سند، یک سند Word جدید ایجاد کنید، تگ های زیر را وارد کنید و آن را به عنوان یک سند DOCX ذخیره کنید.

<<[s.getName()]>> says: "<<[s.getMessage()]>>."

در قالب بالا، “s” به عنوان یک شی از کلاس جاوا در نظر گرفته می شود که برای پر کردن برچسب ها استفاده می شود. بنابراین بیایید یک کلاس به نام Sender با دو عضو داده ایجاد کنیم.

public class Sender {
    public Sender(String name, String message) {
        _name = name;
        _message = message;
    } 
    public String getName() {
        return _name;
    } 
    public String getMessage() {
        return _message;
    } 
    private String _name;
    private String _message;
}

اکنون زمان آن است که قالب ورد را به موتور گزارش LINQ منتقل کنید و سند Word را بر اساس مقادیر شیء فرستنده تولید کنید. مراحل زیر برای تولید سند Word است:

  • شیء Document را ایجاد کرده و با مسیر الگو مقدار دهی اولیه کنید.
  • یک شی از کلاس Sender ایجاد و مقداردهی اولیه کنید.
  • یک شی از کلاس ReportingEngine ایجاد کنید.
  • گزارش را با استفاده از روش ReportingEngine.buildReport() بسازید که الگوی سند، منبع داده و نام منبع داده را می پذیرد.
  • سند Word تولید شده را با استفاده از روش Document.save() ذخیره کنید.

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

// شی Document ایجاد کنید و با الگوی DOCX مقداردهی اولیه کنید.
Document doc = new Document("template.docx");
// شیء فرستنده را ایجاد کنید.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// ایجاد شی ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// گزارش ساخت.
engine.buildReport(doc, sender, "s");
// به عنوان سند Word ذخیره کنید.
doc.save("word.docx");

خروجی

سند word توسط الگو با اشیاء جاوا تولید کنید

با استفاده از داده های XML اسناد Word را از الگو ایجاد کنید

بیایید اکنون یک قدم جلوتر برویم و ببینیم که چگونه می توان قالب های Word را با استفاده از منبع داده XML در سناریوی کمی پیچیده پر کرد. در زیر منبع داده XML است که ما از آن برای پر کردن قالب Word استفاده خواهیم کرد.

<Persons>
   <Person>
       <Name>John Doe</Name>
       <Age>30</Age>
       <Birth>1989-04-01 4:00:00 pm</Birth>
   </Person>
   <Person>
       <Name>Jane Doe</Name>
       <Age>27</Age>
       <Birth>1992-01-31 07:00:00 am</Birth>
   </Person>
   <Person>
       <Name>John Smith</Name>
       <Age>51</Age>
       <Birth>1968-03-08 1:00:00 pm</Birth>
   </Person>
</Persons>

در این سناریو، از تگ های زیر در سند الگو برای چندین رکورد در منبع داده XML استفاده خواهیم کرد.

<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>

کد جاوا برای تولید سند Word، در این مورد، یکسان خواهد بود و به جز ارسال شی جاوا به عنوان منبع داده، شیء XmlDataSource را در متد ReportingEngine.buildReport() ارسال می کنیم. نمونه کد زیر نحوه ایجاد یک سند Word را با پر کردن قالب سند با استفاده از منبع داده XML در جاوا نشان می دهد.

// شی Document ایجاد کنید و با الگوی DOCX مقداردهی اولیه کنید.
Document doc = new Document("template.docx");
// بارگذاری XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// ایجاد شی ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// گزارش ساخت.
engine.buildReport(doc, dataSource, "persons");
// به عنوان سند Word ذخیره کنید.
doc.save("word.docx");

خروجی

سند word را با الگو با XML در جاوا ایجاد کنید

با استفاده از داده های JSON، اسناد Word را از الگو ایجاد کنید

بیایید اکنون نگاهی به نحوه تولید سند Word از الگوی DOCX با استفاده از منبع داده JSON بیندازیم. در زیر داده های JSON است که در این مثال استفاده خواهیم کرد.

[
   {
       Name: "John Smith",
       Contract:
       [
           {
               Client:
               {
                   Name: "A Company"
               },
               Price: 1200000
           },
           {
               Client:
               {
                   Name: "B Ltd."
               },
               Price: 750000
           },
           {
               Client:
               {
                   Name: "C & D"
               },
               Price: 350000
           }
       ]
   },
   {
       Name: "Tony Anderson",
       Contract:
       [
           {
               Client:
               {
                   Name: "E Corp."
               },
               Price: 650000
           },
           {
               Client:
               {
                   Name: "F & Partners"
               },
               Price: 550000
           }
       ]
   },
]

در این مثال، ما سند Word حاوی لیستی از مشتریان گروه بندی شده توسط مدیران آنها را تولید می کنیم. مطابق با این سناریو، قالب DOCX به شکل زیر خواهد بود:

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

برای بارگیری منبع داده JSON، Aspose.Words کلاس JsonDataSource را ارائه می دهد. نمونه کد زیر نحوه ایجاد یک سند Word از الگو را با استفاده از منبع داده JSON در جاوا نشان می دهد.

// شی Document ایجاد کنید و با الگوی DOCX مقداردهی اولیه کنید.
Document doc = new Document("template.docx");
// JSON را بارگیری کنید
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// ایجاد شی ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// گزارش ساخت.
engine.buildReport(doc, dataSource, "managers");
// ذخیره به عنوان سند Word
doc.save("word.docx");

خروجی

ایجاد سند word با JSON در جاوا

با استفاده از داده های CSV، اسناد Word را از الگو ایجاد کنید

در آخر، بیایید نحوه تولید سند Word را با پر کردن قالب Word با استفاده از منبع داده CSV زیر بررسی کنیم.

John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm

در این مثال از الگوی Word زیر استفاده خواهد شد:

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>

برای برخورد با منابع داده CSV، Aspose.Words کلاس CsvDataSource را ارائه می دهد. نمونه کد زیر نحوه تولید یک سند Word را با استفاده از منبع داده CSV در جاوا نشان می دهد.

// شی Document ایجاد کنید و با الگوی DOCX مقداردهی اولیه کنید.
Document doc = new Document("template.docx");
// CSV را بارگیری کنید
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// ایجاد شی ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// گزارش ساخت.
engine.buildReport(doc, dataSource, "persons");
// به عنوان سند Word ذخیره کنید.
doc.save("word.docx");

خروجی

سند word با CSV در جاوا ایجاد کنید

درباره LINQ Reporting Engine بیشتر بدانید

LINQ Reporting Engine از طیف گسترده ای از برچسب ها برای تولید اسناد Word با ویژگی های کامل به صورت پویا در جاوا پشتیبانی می کند. شما می توانید در مورد این برچسب ها به همراه نحو آنها در [این مقاله] کاوش کنید.

در صورت داشتن هرگونه سوال یا سوال، می توانید به Aspose.Words Forum ارسال کنید.

مقالات مرتبط)