Mail Merge و گزارش

Mail Merge یک ویژگی محبوب برای ایجاد سریع و آسان اسناد مانند حروف، برچسب ها و پاکت ها است. Aspose.Words شما را قادر می سازد تا اسناد را از قالب هایی با Mail Merge فیلد تولید کنید.

فیلد Mail Merge فیلدی است که می توانید آن را در یک قالب mail merge قرار دهید تا مقادیر خاصی از یک رکورد منبع داده در اسناد خروجی را شامل شود. به عنوان مثال، شما می توانید یک فیلد ادغام را در یک قالب ایمیل وارد کنید تا سلام نام اول گیرنده را به جای یک " سلام!". Aspose.Words داده های یک منبع خارجی مانند یک پایگاه داده یا فایل را در این زمینه ها قرار می دهد و آنها را فرمت می کند. سند حاصل در پوشه مشخص شده ذخیره می شود.

Aspose.Words عملکرد استاندارد Mail Merge را می گیرد و آن را چندین قدم جلوتر می برد و آن را به یک راه حل گزارش دهی کامل تبدیل می کند که به شما امکان می دهد اسناد پیچیده تری مانند گزارش ها، کاتالوگ ها، موجودی ها و فاکتورها ایجاد کنید. در اینجا چند مزیت از راه حل گزارش Aspose.Words وجود دارد:

  • گزارش های طراحی در Microsoft Word با استفاده از فیلدهای استاندارد Mail Merge
  • تعریف مناطق در سند که در حال رشد هستند، مانند ردیف های سفارش دقیق
  • تصاویر را در طول یک mail mergeوارد کنید
  • اجرای هر منطق سفارشی، قالب بندی کنترل، یا قرار دادن محتوای پیچیده با استفاده از Mail Merge کنترل کننده رویداد
  • اسناد را با داده های هر نوع منبع داده پر کنید

مکانیزم و اجزای اصلی Mail Merge

Aspose.Words امکان بارگذاری اسناد را در فرمت های پشتیبانی شده مختلف فراهم می کند و سپس به کاربران اجازه می دهد تا عملیات Mail Merge را انجام دهند.

معمولا، یک سند بارگذاری شده به شما اجازه می دهد تا زمینه های ادغام را ذخیره کنید، به عنوان مثال، یک سند در فرمت DOCX. اما فرمت هایی وجود دارند که چنین زمینه هایی را ذخیره نمی کنند، به عنوان مثال، TXT. اگر Aspose.Words از بارگذاری چنین فرمت های فایل پشتیبانی کند، می توانید فیلد های ادغام را مستقیما به مدل سند اضافه کنید، سند را در یک فرمت پشتیبانی شده مناسب ذخیره کنید و عملیات Mail Merge را انجام دهید.

عملیات Mail Merge شما mail merge template و data source شما را برای تولید فرد merged documents ادغام خواهد کرد.

قالب Mail Merge {#what-is-a-mail-merge-template}چیست

هدف از استفاده از عملیات mail merge با استفاده از یک قالب ادغام ساده سازی فرآیند ایجاد یک سند است.

راه های مختلفی برای ایجاد و طراحی یک قالب ادغام وجود دارد. شما می توانید از Microsoft Word استفاده کنید و قالب ادغام لازم نیست یک قالب Microsoft Word باشد، یعنی یک سند در فرمت DOT یا DOTX باشد، می تواند یک سند معمولی در فرمت DOC یا DOCX باشد. شما باید برخی از زمینه های خاص به نام merge fields را در این قالب در مکان هایی که می خواهید داده ها از منبع داده شما بعدا وارد شوند، وارد کنید. یا می توانید با استفاده از کلاس DocumentBuilder یک قالب ادغام ایجاد کنید.

قالب ادغام شامل متن اصلی است که باید در تمام اسناد خروجی پس از انجام عملیات Mail Merge یکسان باشد. شما می توانید از هر فرمت برای قالب خود استفاده کنید اگر توانایی اضافه کردن فیلد های ادغام به آن وجود داشته باشد. تمام فیلد های ادغام در قالب شما از منبع داده شما در طول عملیات Mail Merge پر خواهد شد.

منابع داده برای یک عملیات Mail Merge

Aspose.Words Mail Merge منابع مختلف داده را قبول می کند. این می تواند یک DataTable, DataView, DataSet, IDataReader, آرایه ای از مقادیر پشتیبانی شده توسط ADO .NET یا منابع داده سفارشی که توسط پیاده سازی های IMailMergeDataSource نشان داده شده است.

منبع داده شامل تمام اطلاعاتی است که در طول عملیات Mail Merge برای شخصی سازی ایمیل ها و اسناد فردی کشیده می شود. منابع داده را می توان به صورت دستی ایجاد کرد یا با گزارش از یک پایگاه داده یا برنامه موجود تولید کرد. اگر داده هایی در فرمت XML دارید، می توانید آن را با DataSet بارگذاری و ادغام کنید. عملیات Mail Merge تمام سوابق منبع داده را مرور می کند و آنها را در زمینه های Mail Merge در سند قرار می دهد. شما می توانید برخی از رابط های mail merge مانند IMailMergeDataSourceRoot را برای ادغام داده ها از هر منبع داده، از جمله یک پرس و جو LINQ، یک فایل XML یا اشیاء تجاری پیاده سازی کنید.

مثال کد زیر نشان می دهد که چگونه یک جدول داده را به عنوان منبع داده برای عملیات Mail Merge بارگذاری کنیم:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
private static final String dataDir = Utils.getSharedDataDir(ExecuteMailMergeWithRegions.class) + "MailMerge/";
public static void main(String[] args) throws Exception {
Document doc = new Document(dataDir + "MailMerge.ExecuteWithRegions.doc");
int orderId = 10444;
// Perform several mail merge operations populating only part of the document each time.
// Use DataTable as a data source.
// The table name property should be set to match the name of the region defined in the document.
DataTable orderTable = getTestOrder(orderId);
doc.getMailMerge().executeWithRegions(orderTable);
DataTable orderDetailsTable = getTestOrderDetails(orderId, "ExtendedPrice DESC");
doc.getMailMerge().executeWithRegions(orderDetailsTable);
doc.save(dataDir + "MailMerge.ExecuteWithRegionsDataTable Out.doc");
}
private static DataTable getTestOrder(int orderId) throws Exception {
java.sql.ResultSet resultSet = executeDataTable(java.text.MessageFormat.format("SELECT * FROM AsposeWordOrders WHERE OrderId = {0}", Integer.toString(orderId)));
return new DataTable(resultSet, "Orders");
}
private static DataTable getTestOrderDetails(int orderId, String orderBy) throws Exception {
StringBuilder builder = new StringBuilder();
builder.append(java.text.MessageFormat.format("SELECT * FROM AsposeWordOrderDetails WHERE OrderId = {0}", Integer.toString(orderId)));
if ((orderBy != null) && (orderBy.length() > 0)) {
builder.append(" ORDER BY ");
builder.append(orderBy);
}
java.sql.ResultSet resultSet = executeDataTable(builder.toString());
return new DataTable(resultSet, "OrderDetails");
}
/**
* Utility function that creates a connection, command, executes the command
* and return the result in a DataTable.
*/
private static java.sql.ResultSet executeDataTable(String commandText) throws Exception {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String connString = "jdbc:ucanaccess://" + dataDir + "Northwind.mdb";
// From Wikipedia: The Sun driver has a known issue with character encoding and Microsoft Access databases.
// Microsoft Access may use an encoding that is not correctly translated by the driver, leading to the replacement
// in strings of, for example, accented characters by question marks.
//
// In this case I have to set CP1252 for the European characters to come through in the data values.
java.util.Properties props = new java.util.Properties();
props.put("charSet", "Cp1252");
// DSN-less DB connection.
java.sql.Connection conn = java.sql.DriverManager.getConnection(connString, props);
// Create and execute a command.
java.sql.Statement statement = conn.createStatement();
return statement.executeQuery(commandText);
}

اسناد ادغام شده یک عملیاتMail Merge

یک سند ادغام شده نتیجه عملیات Mail Merge است که شما قالب را با منبع داده ادغام می کنید. تمام فیلد های ادغام شده در سند ادغام شده با داده های واقعی از منبع داده شما جایگزین می شوند.

تصویر زیر نمونه ای از قالب merge با merged fields را قبل از انجام عملیات Mail Merge نشان می دهد.

mail-merge-and-reporting-aspose-words-java-1

تصویر زیر نمونه ای از سند ادغام شده خروجی را در نتیجه انجام عملیات Mail Merge نشان می دهد.

mail-merge-and-reporting-aspose-words-java-2

بایگانی برچسب برای: