.net 操作word书签的问题
c#中如何正确替换word书签的内容?
string strWordTemplate = Server.MapPath("司法.doc"); // 模板文件
Word.Application WordApp = new Word.ApplicationClass(); // 定义一个Word.Application 对象
Word.Document doc = OpenDoc(strWordTemplate,ref WordApp,1); //定义一个Word.Document 对象
foreach(Word.Bookmark BM in doc.Bookmarks)
{
switch(BM.Name)
{
case "PrintCopySEGN":
BM.Select();
BM.Range.Text="test";//在这里报错,原因是 赋值前 BM.Range.Text = " formText " 执行这条语句之后提示: "无法删除范围。"
break;
}
......
}
请高手帮忙解答
问题点数:20、回复次数:4Top
1 楼tangsailei(line)回复于 2006-03-20 10:23:03 得分 0
自己顶一下
Top
2 楼20011521()回复于 2006-03-20 11:15:03 得分 10
private void button2_Click(object sender, System.EventArgs e)
{
//数据库是否存在
if( this.getData() )
{
System.Data.DataRow dr;
System.Data.DataView dv= this.dsScore.Tables[0].DefaultView;
for( int i=0; i< this.dsStu.Tables[0].Rows.Count; i++ )
{
//建立新文档
object missing = System.Reflection.Missing.Value;
if( App == null )
App = new Word.ApplicationClass();
App.Visible = true;
object oTemplate = this.模板.Text.Trim();
doc = App.Documents.Add(ref oTemplate, ref missing,ref missing, ref missing);
doc.Activate();
Word.Bookmarks bms = doc.Bookmarks;
//替换开学日期等内容
foreach( String s in bmsComm)
{
this.replace( bms, s, this.getControlText( s ) );
}
dr = dsStu.Tables[0].Rows[i];
//替换学生纪律情况等
foreach( System.Data.DataColumn dc in dsStu.Tables[0].Columns )
{
this.replace( bms, dc.Caption, dr[ dc.Caption].ToString() );
}
//替换成绩
int n = 1;
dv.RowFilter = "学号=" + dr["学号"].ToString();
foreach(DataRowView row in dv)
{
this.replace( bms,"课程名称"+n.ToString(),row["课程名称"].ToString());
this.replace( bms,"成绩"+n.ToString(),row["成绩"].ToString());
n++;
}
//使用默认打印机打印文档
//C#不提供默认参数真是麻烦
doc.PrintOut( ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
ref missing,ref missing,ref missing,ref missing,ref missing);
//关闭文档而不保存
object SaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
missing = System.Reflection.Missing.Value;
doc.Close( ref SaveChanges, ref missing, ref missing);
}
}
}
MARKTop
3 楼tangsailei(line)回复于 2006-03-22 08:47:14 得分 0
谢谢大哥,这个问题还是没有解决,不过你给我代码对我还是挺有帮助的.Top
4 楼earthgoshawk(追求)回复于 2006-03-22 10:48:23 得分 10
替换语句换成这个试试
ojbect name ="PrintCopySEGN";
rng = word.ActiveDocument.Bookmarks. get_Item(ref name).Range;
rng.Text = "Hello";
range = rng;
word.ActiveDocument.Bookmarks.Add("bookMk1", ref range);
Top




