网上有很多答文,大部分都是因为Office多版本引起的dll调用不明确问题。此类通过删除注册表对应的office版本一般都能解决。
本人遇到的问题,是office2003 没有装在C盘,这也是我因为我向来不喜欢把东西装在C盘引起的。结果注册表搞了一大通,连路径都能记清楚了,还是没解决。后来想着是不是win Server 2016 服务器版本原因,是什么地方还需要进行设置,结果网上根本没有这与服务器版本有关的任何问题。最后才想到了office安装路径问题。
这还没完,好不容易不报这个错误了,接着又在 doc.Save的时候,冒出一个命令失败的错误。网上比较公认的做法是,在管理工具 - 组件服务 - 我的电脑 - DOCM配置中,找到 MicroSoft Word,配置其权限。可我找了半天,连MicroSoft Word这一选项都没找到。
后来找到一篇文章:https://www.cnblogs.com/hack1506/p/4059090.html,居然是C盘上某个文件夹不存在:
64位服务器跟32位的区别是:
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
楼主一一对应着找,发现少了Desktop这个文件夹,新建后,没想到真的可以了。此时我对这位博主是感激万分的
最后我想说,Office的组件调用起来简直就是蛋疼,可没办法,老项目中太多导出功能用的是这个,一旦服务器环境变了,可能得折腾好久,就算你第一次环境配过了,时间过久了,下次你就可能忘了。后来我把导出的代码换成NPOI,发现NPOI对word的操作也不是特别方便,尤其是在表格单元格中设置字体、添加段落、控制样式上,显得很吃力