2016-10-13 16 views

答えて

0

Aspose.Wordsを使用してこの要件を満たすことができます。

Aspose.Wordsではドキュメントの以下のセクションを参照してください:ここでは How to Execute Mail Merge

はサンプルコードです:

Document doc = new Document(filePath); 
doc.MailMerge.Execute(GetDataTable()); 
doc.Save(MyDir + @"16.10.0.docx"); 

とGetDataTableメソッドの定義

private static DataTable GetDataTable() 
{ 
    DataTable dataTable = new DataTable("table"); 

    dataTable.Columns.Add(new DataColumn("location_num")); 

    DataRow dataRow; 
    for (int i = 0; i < 5; i++) 
    { 
     dataRow = dataTable.NewRow(); 
     dataRow[0] = "location value " + i; 
     dataTable.Rows.Add(dataRow); 
    } 

    return dataTable; 
} 

ホープこれは役に立ちます。私はAsposeとDeveloper Evangelistで働いています。

+0

Javaコードですか?私はdataTable.ColumnsまたはdataTable.Rowsオプションを取得していません。 –

0

同じことを達成するためにAspose.Words for Javaコードの下に見つけてください:

import com.aspose.words.*; 
import com.aspose.words.net.System.Data.DataColumn; 
import com.aspose.words.net.System.Data.DataRow; 
import com.aspose.words.net.System.Data.DataTable; 

public class Program { 

    public static void main(String[] args) throws Exception { 

     License lic = new License(); 
     lic.setLicense("D:\\temp\\Aspose.total.java.lic"); 

     Document doc = new Document("D:\\temp\\input.docx"); 
     doc.getMailMerge().execute(GetDataTable()); 
     doc.save("D:\\temp\\16.10.0.docx"); 
    } 

    private static DataTable GetDataTable() 
    { 
     DataTable dataTable = new DataTable("table"); 
     dataTable.getColumns().add("location_num"); 

     DataRow dataRow; 
     for (int i = 0; i < 5; i++) 
     { 
      dataRow = dataTable.newRow(); 
      dataRow.set(0, "location value " + i); 
      dataTable.getRows().add(dataRow); 
     } 

     return dataTable; 
    } 
} 

希望、このことができます。私はAsposeとDeveloper Evangelistで働いています。

+0

このソリューションは機能していますが、小さな問題があり、繰り返しごとに新しいページが追加されています。私の必要条件は、同じページに、このマージフィールドを行単位で追加したい場合です。ページがいっぱいであれば、各繰り返しではなく新しいページを追加する必要があります。ありがとう:) –

+0

Aspose.Wordsの[Merge with Regions](http://www.aspose.com/docs/display/wordsjava/How+to+Execute+Mail+Merge#HowtoExecuteMailMerge-HowtoExecuteMailMergewithRegions)機能を使用する必要があります例えばdoc.getMailMerge()。executeWithRegions(GetDataTable());私はAsposeとDeveloper Evangelistで働いています。 –

+0

それは動作していません - それはマージフィールドを置き換えていません。 –

関連する問題