1.Aspose.Words 如何安装
我有同样问题,添加引用后出现警告,但安装试用版没问题, 当前的目标框架“.NETFramework,Version=v4.0,Profile=Client”未包含引用的程序集“Aspose.Words, Version=11.7.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56, processorArchitecture=MSIL”所依赖的“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”。
这会导致无法解析引用的程序集。若要解决此问题,请 (1) 更改此项目的目标框架,或者 (2) 从此项目中删除引用的程序集。
2.如何通过Aspose.Words合并两个word文档
1
将需要合并的所有Word文档存放在同一个文件夹中。这里我做一个测试,建立三个Word文件,分别是1、2、3,内容也就是相应的数字,方便大家理解。
多图
2
新建Word文件,这里命名为“合并文档”。
3
打开“合并文档”,点选“插入”—→“文件”选项。
4
选择我们需要插入的“全部文档”,点击“插入”按钮。
注:单个选择可以按Ctrl + 左键,连续选择可以按Shift + 左键
3.如何使用Aspose.Words在邮件合并时生成多个文档
产生多个文档需要进行多次邮件合并。
如果需要将数据源中的所有数据都存在于一个单独的文件中,需要做到以下几点: 循环数据表中的所有行。 在邮件合并前载入(或复制)原始文档。
执行邮件合并,保存文件。 你可以在每个邮件合并前从一个文件或流中加载模板文件,但通常情况下,更为快速的方法是只加载一次文档,然后在每次邮件合并前从内存中复制。
要注意的是,执行邮件合并你应该有一个适当的模板文件。这个模板可以是一个Microsoft Word模板或一个普通的Microsoft Word文档,但它需要在插入数据的地方包含MERGEFIELD字段。
每个字段的名称应和数据源中相应的字段相同。 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。
4.如何使用Aspose.Words在邮件合并时生成多个文档
产生多个文档需要进行多次邮件合并。
如果需要将数据源中的所有数据都存在于一个单独的文件中,需要做到以下几点: 循环数据表中的所有行。 在邮件合并前载入(或复制)原始文档。
执行邮件合并,保存文件。 你可以在每个邮件合并前从一个文件或流中加载模板文件,但通常情况下,更为快速的方法是只加载一次文档,然后在每次邮件合并前从内存中复制。
要注意的是,执行邮件合并你应该有一个适当的模板文件。这个模板可以是一个Microsoft Word模板或一个普通的Microsoft Word文档,但它需要在插入数据的地方包含MERGEFIELD字段。
每个字段的名称应和数据源中相应的字段相同。 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。
5.word或者pdf通过web浏览,而且文档只读,不能复制,浏览器不能保
你要求不能复制和保存,那就只能使用Flash,采取数据流的方式,将Word或PDF展现在页面当中,有如百度文库那样。
参考这几个代码
/Articles/41933/ASP-NET-PDF-Viewer-User-Control-Without-Acrobat-Re
/Articles/20699/Embed-PDFs-into-a-Web-Page-with-a-Custom-Control
以下是silverlight的
/Articles/29832/Blend-PDF-with-Silverlight
至于Word,可以先保存为pdf,再使用上述代码
转载请注明出处51数据库 » asposeword复制全文