原創(chuàng)|其它|編輯:郝浩|2012-11-28 15:36:14.000|閱讀 1863 次
概述:使用Aspose.Words進行郵件合并操作一般情況下只會從數(shù)據(jù)源生成一個文件(例如創(chuàng)建發(fā)票或信件)。本文將詳述如何使用Aspose.Werds在郵件合并時生成多個文檔。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
使用Aspose.Words進行郵件合并操作一般情況下只會從數(shù)據(jù)源生成一個文件(例如創(chuàng)建發(fā)票或信件)。
產(chǎn)生多個文檔需要進行多次郵件合并。如果需要將數(shù)據(jù)源中的所有數(shù)據(jù)都存在于一個單獨的文件中,需要做到以下幾點:
你可以在每個郵件合并前從一個文件或流中加載模板文件,但通常情況下,更為快速的方法是只加載一次文檔,然后在每次郵件合并前從內(nèi)存中復(fù)制。
要注意的是,執(zhí)行郵件合并你應(yīng)該有一個適當(dāng)?shù)哪0逦募_@個模板可以是一個Microsoft Word模板或一個普通的Microsoft Word文檔,但它需要在插入數(shù)據(jù)的地方包含MERGEFIELD字段。每個字段的名稱應(yīng)和數(shù)據(jù)源中相應(yīng)的字段相同。
C#
using System; using System.Data; using System.Data.OleDb; using System.IO; using System.Reflection; using Aspose.Words; namespace MultipleDocsInMailMerge { class Program { public static void Main(string[] args) { //Sample infrastructure. string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar; string dataDir = new Uri(new Uri(exeDir), @"../../Data/").LocalPath; ProduceMultipleDocuments(dataDir, "TestFile.doc"); } public static void ProduceMultipleDocuments(string dataDir, string srcDoc) { // Open the database connection. string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataDir + "Customers.mdb"; OleDbConnection conn = new OleDbConnection(connString); conn.Open(); try { // Get data from a database. OleDbCommand cmd = new OleDbCommand("SELECT * FROM Customers", conn); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataTable data = new DataTable(); da.Fill(data); // Open the template document. Document doc = new Document(dataDir + srcDoc); int counter = 1; // Loop though all records in the data source. foreach (DataRow row in data.Rows) { // Clone the template instead of loading it from disk (for speed). Document dstDoc = (Document)doc.Clone(true); // Execute mail merge. dstDoc.MailMerge.Execute(row); // Save the document. dstDoc.Save(string.Format(dataDir + "TestFile Out {0}.doc", counter++)); } } finally { // Close the database. conn.Close(); } } } } VB
Imports Microsoft.VisualBasic Imports System Imports System.Data Imports System.Data.OleDb Imports System.IO Imports System.Reflection Imports Aspose.Words Namespace MultipleDocsInMailMerge Friend Class Program Public Shared Sub Main(ByVal args() As String) 'Sample infrastructure. Dim exeDir As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + Path.DirectorySeparatorChar Dim dataDir As String = New Uri(New Uri(exeDir), "../../Data/").LocalPath ProduceMultipleDocuments(dataDir, "TestFile.doc") End Sub Public Shared Sub ProduceMultipleDocuments(ByVal dataDir As String, ByVal srcDoc As String) ' Open the database connection. Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dataDir & "Customers.mdb" Dim conn As New OleDbConnection(connString) conn.Open() Try ' Get data from a database. Dim cmd As New OleDbCommand("SELECT * FROM Customers", conn) Dim da As New OleDbDataAdapter(cmd) Dim data As New DataTable() da.Fill(data) ' Open the template document. Dim doc As New Document(dataDir & srcDoc) Dim counter As Integer = 1 ' Loop though all records in the data source. For Each row As DataRow In data.Rows ' Clone the template instead of loading it from disk (for speed). Dim dstDoc As Document = CType(doc.Clone(True), Document) ' Execute mail merge. dstDoc.MailMerge.Execute(row) ' Save the document. dstDoc.Save(String.Format(dataDir & "TestFile Out {0}.doc", counter)) counter += 1 Next row Finally ' Close the database. conn.Close() End Try End Sub End Class End Namespace
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)