ایجاد Word از قالب در سی شارپ

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

سناریوهای زیر همراه با نمونه کد در این مقاله پوشش داده می شود:

C# Word Automation API

ما از Aspose.Words for .NET - یک API اتوماسیون Word استفاده خواهیم کرد که به شما امکان می دهد سند Word را از ابتدا یا با پر کردن قالب های از پیش تعریف شده Word ایجاد کنید. می‌توانید باینری‌های API را دانلود یا با استفاده از یکی از روش‌های زیر نصب کنید.

با استفاده از NuGet Package Manager

با استفاده از Package Manager Console

PM> Install-Package Aspose.Words

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

اول از همه، بیایید ببینیم که چگونه با استفاده از اشیاء C#، قالب Word را پر کنیم. برای این کار، یک سند Word (DOC/DOCX) با متغیرهای زیر به عنوان محتوای سند ایجاد می کنیم:

<<[sender.Name]>> says: "<<[sender.Message]>>."

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

public class Sender
{
	public string Name { get; set; }
	public string Message { get; set; }

	public Sender (string _name, string _message)
	{
		Name = _name;
		Message = _message;
	}
}

اکنون از موتور گزارش‌دهی Aspose.Words برای تولید سند Word از الگو و شیء کلاس Sender با دنبال کردن مراحل زیر استفاده می‌کنیم.

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

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

Document doc = new Document("template.docx");
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, sender, "sender");
doc.Save("word.docx");

خروجی

ایجاد سند Word از منبع داده XML در سی شارپ

برای تولید سند Word از منبع داده XML، از الگوی Word کمی پیچیده‌تر با متغیرهای زیر استفاده می‌کنیم:

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

منبع داده XML که من در این مثال استفاده کرده ام در زیر آورده شده است.

<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>

مراحل زیر برای تولید یک سند Word از منبع داده XML است:

  • یک نمونه از کلاس Document ایجاد کنید و آن را با مسیر قالب Word مقداردهی کنید.
  • یک نمونه از کلاس XmlDataSource ایجاد کنید و آن را با مسیر فایل XML مقداردهی اولیه کنید.
  • کلاس Instantiate ReportingEngine.
  • از متد ReportingEngine.BuildReport() به همان روشی که قبلا برای پر کردن قالب Word استفاده کرده‌ایم استفاده کنید.
  • سند Word تولید شده را با استفاده از روش ()Document.Save ذخیره کنید.

نمونه کد زیر نحوه تولید یک سند Word از منبع داده XML در سی شارپ را نشان می دهد.

Document doc = new Document("template.docx");
XmlDataSource dataSource = new XmlDataSource("datasource.xml");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

خروجی

ایجاد سند Word از منبع داده JSON در سی شارپ

اکنون بیایید ببینیم که چگونه یک سند Word را با استفاده از منبع داده JSON تولید کنیم. در این مثال، ما لیستی از مشتریانی که توسط مدیران آنها گروه بندی شده اند ایجاد می کنیم. در این مورد الگوی ورد زیر خواهد بود:

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

زیر منبع داده 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 از JSON، از کلاس JsonDataSource برای بارگیری و استفاده از منبع داده JSON استفاده می کنیم و بقیه مراحل به همان صورت باقی می مانند. نمونه کد زیر نحوه تولید یک سند Word از الگو را با استفاده از JSON در C# نشان می دهد.

Document doc = new Document("template.docx");
JsonDataSource dataSource = new JsonDataSource("datasource.json");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "managers");
doc.Save("word.docx");

خروجی

ایجاد سند Word از منبع داده CSV در سی شارپ

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

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

الگو با داده های 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

حالا بیایید به کد سی شارپ برسیم. همه مراحل در اینجا نیز ثابت خواهند ماند به جز یک تغییر که ما از کلاس CsvDataSource برای بارگیری داده‌های CSV استفاده می‌کنیم. نمونه کد زیر نحوه تولید سند Word از منبع داده CSV را نشان می دهد.

Document doc = new Document("template.docx");
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

خروجی

Aspose.Words را برای دات نت به صورت رایگان امتحان کنید

می توانید Aspose.Words را برای دات نت با استفاده از یک [مجوز موقت] رایگان امتحان کنید.

نتیجه

در این مقاله نحوه تولید اسناد Word از قالب ها با استفاده از سی شارپ را یاد گرفتید. علاوه بر این، نحوه استفاده از اشیاء، منابع داده XML، JSON و CSV را برای تولید اسناد Word دیده اید. می‌توانید با استفاده از documentation درباره C# Word automation API بیشتر کاوش کنید. علاوه بر این، می توانید از طریق [فروم 12 ما با ما تماس بگیرید.

همچنین ببینید