先引用Aspose.Words类库,然后创建一个Word模板,我现在的需求是有一个模板页,但是需要多个相同的模板页数量也不一定,就需要创建需要多页模板页,但是创建的时候书签是会有变化的,现在分享一下心得。
//模板路径
string WordTemplate = Server.MapPath("~/Files/Template/Word/模板.doc");
//实例化
Document doc = new Document(WordTemplate);
//把原模板复制下来
Document doc3 = doc.Clone();
int j = 0;
int k = 0;
//取得的数据条数
k = Data.Count();
//服务器临时文件夹 这个是创建多个模板页的文件夹,并且删除创建过的模板页
string wordPath = Server.MapPath("~/Files/Template/TempWord/");
if (!Directory.Exists(wordPath))
{
Directory.CreateDirectory(wordPath);
}
//通过等到的数据创建模板页
for (int i = 0; i < k - 1; i++)
{
doc3.AppendDocument(doc, ImportFormatMode.KeepSourceFormatting);
}
//保存新的模板页
doc3.Save(wordPath + "New_模板.doc");
//实例化新的模板页
Document doc2 = new Document(wordPath + "New_模板.doc");
//循环数据 书签替换
foreach (var item in Data)
{
//查找到书签标签
foreach (Bookmark mark in doc2.Range.Bookmarks)
{
//复制书签标签后标签会自动添加数字下标
string Name = "Name_" + j;
string Bill_Money = "Bill_Money_" + j;
string PayCode = "PayCode_" + j;
if (mark != null)
{
if (mark.Name == "Name" || mark.Name == Name)
{
mark.Text = !string.IsNullOrEmpty(Currencyitem.FirstOrDefault().CstmNameC) ? Currencyitem.FirstOrDefault().CstmNameC : !string.IsNullOrEmpty(Currencyitem.FirstOrDefault().CstmNameE) ? Currencyitem.FirstOrDefault().CstmNameE : " ";
}
else if (mark.Name == "PayCode" || mark.Name == PayCode)
{
mark.Text = Currencyitem.FirstOrDefault().VendorCode;
}
else if (mark.Name == "Bill_Money" || mark.Name == Bill_Money)
{
decimal? Sum_M = Currencyitem.Where(o => true).Sum(o => o.WeiHeXiaoJinEr);
mark.Text = ExchangRate.FirstOrDefault(o => o.ExchangeRateType == Currencyitem.Key).TypeNameJX + Decimal.Round((decimal)Sum_M, 2);
}
}
j++;
}
//保存新的Word
wordpathname = wordPath + "付款申请书" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".doc";
doc2.Save(wordpathname);
}
FileInfo fileInfo = new FileInfo(wordpathname);
下载保存得Word