2007的Word组件不能在OFFICE2013的用户机上使用

leeya66 2016-02-25 11:09:26
我程序引入的是2007的Word组件,现在发布出去,用户电脑安装的是OFFICE2013,输出Word文档时报错。
代码位置是给range的text属性赋值时,报错
  killWinWordProcess();
MSWord.Application wordApp;//Word应用程序变量
MSWord.Document wordDoc;//Word文档变量
wordApp = new ApplicationClass();
wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
wordApp.Visible = false;
object missing = System.Reflection.Missing.Value;

object templateName = saveFileDialog1.FileName; //"c:\\myWord.doc";//最终的word文档需要写入的位置

object ModelName = System.Windows.Forms.Application.StartupPath + "\\PmTemplate\\内部联系单.doc";
object count = 1;
object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
wordDoc = wordApp.Documents.Open(ref ModelName, 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);//打开word模板

//在书签处插入文字
object oStart = "DDate";//word中的书签名
Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置
range.Text = this.MyInfo.DDate.ToShortDateString ();//在书签处插入文字内容
//运行到这里报错

请问应该怎么办?
...全文
238 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeya66 2016-02-25
  • 打赏
  • 举报
回复
我去试了一下,可能还是版本的原因引起的,我在OFFICE2010和OFFICE2007电脑上面都能顺利导出到Word,只有2013是报错的。不知道大家有没有遇到过类似的问题?
leeya66 2016-02-25
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 rrxxjj1234 的回复:] 嗯,那是应该怎么办呢?我有的电脑可以,有的电脑不行,模版文件是同一个位置,权限也是一样的,都是只读权限。
只读权限你能编辑?[/quote]只读权限是能够编辑的,只是不能保存。保存的时候,我是另存为,存到其他路径。所以是没问题的。现在就是这个2013的编辑保护,如果用C#代码给取消掉。或者相当于鼠标点击“开始编辑”
xdashewan 2016-02-25
  • 打赏
  • 举报
回复
引用 2 楼 rrxxjj1234 的回复:
嗯,那是应该怎么办呢?我有的电脑可以,有的电脑不行,模版文件是同一个位置,权限也是一样的,都是只读权限。
只读权限你能编辑?
leeya66 2016-02-25
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
这貌似是文件编辑保护和版本无关,注意是编辑保护不是只读
嗯,那是应该怎么办呢?我有的电脑可以,有的电脑不行,模版文件是同一个位置,权限也是一样的,都是只读权限。
xdashewan 2016-02-25
  • 打赏
  • 举报
回复
这貌似是文件编辑保护和版本无关,注意是编辑保护不是只读
  • 打赏
  • 举报
回复
判断一下作两个分支处理 //Word2013 var wordProg = Type.GetTypeFromProgID("Word.Application.11"); if(wordProg != null) { wordIns = Activator.CreateInstance(wordProg); 这里调用2013的方法 } //Word2010及以下 else { wordProg = Type.GetTypeFromProgID("Word.Application"); if(wordProg != null) { wordIns = Activator.CreateInstance(wordProg); 这里是2010及以下版本的处理 } } Word2010对应14.0, Word 2007 对应12.0,Word 2003 对应11.0。Word.Application将取打开方式中设定的默认程序(默认是安装的最高版本)

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧