Я бы посоветовал вам использовать слияние по почте, что было бы намного проще.
Сначала измените ваш шаблон документа Word, вставив поля слияния, как показано ниже:

Во-вторых, обратитесь к приведенному ниже примеру кода для объединения данных в таблицу данных с таблицей слов:
using System.Collections;
using System.Collections.Generic;
using System.Data;
using Spire.Doc;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
Document document = new Document();
//load word document
document.LoadFromFile("template.docx");
//convert datatable to list
DataTable dt = GetDataTable();
DataSet dsTmp = new DataSet();
dsTmp.Tables.Add(dt);
List<DictionaryEntry> list = new List<DictionaryEntry>();
DictionaryEntry dictionaryEntry = new DictionaryEntry("Table", string.Empty);
list.Add(dictionaryEntry);
//merge data in list to word table
document.MailMerge.ExecuteWidthNestedRegion(dsTmp, list);
//save the result document to pdf
//document.SaveToFile("Result.docx", FileFormat.Docx2013);
document.SaveToFile("Result.pdf", FileFormat.PDF);
}
public static DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.TableName = "Table";
dt.Columns.Add("srno", typeof(string));
dt.Columns.Add("particulars", typeof(int));
dt.Columns.Add("finish", typeof(int));
dt.Columns.Add("thickness", typeof(string));
dt.Columns.Add("size", typeof(string));
dt.Columns.Add("chargeable", typeof(int));
dt.Columns.Add("unit", typeof(int));
dt.Columns.Add("rateUnit", typeof(string));
dt.Columns.Add("total", typeof(string));
DataRow dr1 = dt.NewRow();
dr1["srno"] = "A";
dr1["particulars"] = "20";
dr1["finish"] = "1";
dr1["thickness"] = "$1000";
dr1["size"] = "A";
dr1["chargeable"] = "20";
dr1["unit"] = "1";
dr1["rateUnit"] = "$1000";
dr1["total"] = "A";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["srno"] = "B";
dr2["particulars"] = "20";
dr2["finish"] = "1";
dr2["thickness"] = "$1500";
dr2["size"] = "B";
dr2["chargeable"] = "20";
dr2["unit"] = "1";
dr2["rateUnit"] = "$1500";
dr2["total"] = "B";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3["srno"] = "C";
dr3["particulars"] = "20";
dr3["finish"] = "1";
dr3["thickness"] = "$1500";
dr3["size"] = "C";
dr3["chargeable"] = "20";
dr3["unit"] = "1";
dr3["rateUnit"] = "$1500";
dr3["total"] = "C";
dt.Rows.Add(dr3);
return dt;
}
}
}

Если вы не хотите использовать слияние по почте, вам нужно добавить строки в таблицу слов с помощью table.AddRow();
, а затем присвоить значение данных таблице слов с помощью l oop (table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());
).