我做了一个项目,是把通过界面上的数据,替换到word模板中去,只替换特定的地方。
替换我已经做好了,是用书签去替换的,但有个问题是:
举个例子
[4.2 [一号楼]
此号楼是[三层],高是[15米] ]
4.3 [二号楼]
此号楼是[三层],高是[15米]
。。。。
这个4.2 章节 ,4.3章节 是不固定的,有可能有4.1章节,4.2章节,4.3章节 ,但每个章节之间的模板差不多是一样,只是有些数据不一样(比如高), 这个时候 怎么去生成章节,而且需要用书签去替换。
提醒下,如果把4.2章节复制一份到word文档下面,那么 4.2这个章节里面的书签 就会消失,原因是复制了后,书签不能同名,书签是不能复制的。
我用的是using Microsoft.Office.Interop.Word; C#
请高手们请教,真心求教.谢谢谢谢
///<summary>
/// 设置段落基本样式,有编号样式
///</summary>
///<param name="alignment">段落对齐方式</param>
///<param name="level">段落大纲级别,0为文本</param>
///<param name="numberFormat">设置编号样式</param>
public void SetParagraphStyle(string alignment, int level,string numberFormat)
{
SetAlignment(alignment);
SetParagraphOutlineLevel(level);
Word.ListTemplate listTemp = myWord.ListGalleries[Word.WdListGalleryType.wdNumberGallery].ListTemplates.get_Item(1);
myWord.Selection.Range.ListFormat.ApplyListTemplate(listTemp, ref bContinuousPrev, ref applyTo, ref defaultListBehaviour);
myWord.Selection.Range.ListFormat.ListTemplate.ListLevels[1].NumberFormat = numberFormat;
}
///<summary>
/// 设置段落大纲级别
///</summary>
///<param name="level">级别,0代表文本</param>
private void SetParagraphOutlineLevel(int level)
{
switch (level)
{
case 1:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel1;
break;
case 2:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel2;
break;
case 3:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel3;
break;
case 4:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel4;
break;
case 5:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel5;
break;
case 6:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel6;
break;
case 7:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel7;
break;
case 8:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel8;
break;
case 9:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevel9;
break;
case 0:
myWord.Selection.ParagraphFormat.OutlineLevel = Word.WdOutlineLevel.wdOutlineLevelBodyText;
break;
}
}
楼主解决了这个问题没有,能不能发我一份源码学习下?最近在做一个大作业,很急~谢谢