C#读写word想实现下面的效果:
为了控制样式,最简单的方式就是使用书签:
(1)将打钩的方框改为不打钩的方框,
(2)给每个方框插入书签,不同的土地利用类型有不同的编码,旱地前的方框就可以插入书签命名为TDLYLX013,
(3)在程序中获取土地利用类型,通过与书签名称匹配,将对应的方框修改为打钩的方框。
打钩的方框字体名称是 Wingdings(在word中查看),同时直接在word中复制打钩的方框粘贴到程序中,打钩的方框在程序中会显示为
if (bk.Name == "TDLYLX" + tdlylx)
{
bk.Range.Font.Name = "Wingdings";
bk.Range.Text = "þ";
}
完整示例如下:
#region word文档设置
Microsoft.Office.Interop.Word.Application wApp = new Microsoft.Office.Interop.Word.ApplicationClass();
wApp.Visible = false;
Microsoft.Office.Interop.Word._Document wDoc = null;
Microsoft.Office.Interop.Word.Table table = null;
System.Collections.IEnumerator pEnumerator = null;
Microsoft.Office.Interop.Word.Bookmark bk = null;
#endregion
string sFilePath = "D:\\test\\模板文件.doc";//模板文件路径
string docfile = "C:\\Users\\Administrator\\Desktop\\新建文件夹\\test.doc";
System.IO.File.Copy(sFilePath, docfile, true);//将模板文件从D盘复制到C盘指定目录
wDoc = wApp.Documents.Open(docfile);//打开word文件
#region 填写书签部分
string sfjbnt="1";//1表示是
string tdlylx="013";//013表示旱地
pEnumerator = wApp.ActiveDocument.Bookmarks.GetEnumerator();
while (pEnumerator.MoveNext())
{
bk = (Microsoft.Office.Interop.Word.Bookmark)pEnumerator.Current;
if (bk.Name == "XM")
{
bk.Range.Text = "张三";
}
else if (bk.Name == "SFJBNT" + sfjbnt)
{
bk.Range.Font.Name = "Wingdings";//设置字体
bk.Range.Text = "þ";//内容是打钩的方框
}
else if (bk.Name == "TDLYLX" + tdlylx)
{
bk.Range.Font.Name = "Wingdings";
bk.Range.Text = "þ";
}
}
#endregion
wDoc.Close(true);
if (wApp != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(wApp);
wApp = null;
}
GC.Collect();
System.Diagnostics.Process[] excelprocess = System.Diagnostics.Process.GetProcessesByName("WINWORD");
foreach (System.Diagnostics.Process pr in excelprocess)
{
pr.Kill();//停止关联进程
}