“因为没有打开的文档,所以这一命令无效”

siugwan 2006-12-22 04:50:09
asp.net操作Word,
发布到另一台win 2000服务器上没问题,
发布到自己的手提win server 2003 R2上也没问题,
在正式的服务器上调试没问题,


布署到正式的服务器上就出现“错误:System.Runtime.InteropServices.COMException (0x800A1098): 因为没有打开的文档,所以这一命令无效”

正式服务器是Win Server 2003 R2

具体操作是打开一个 word 的 dot 模版,写入数据,再保存到临时文件里。

服务器上com组件已经开放给 network service 全部权限,相关文件夹也授予network service全部权限。

代码就不贴出来了,在几台机器上没事,在正式的服务器上DEBUG也没事,应该是没问题的。

到底要怎么设置?
...全文
2267 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
@CAPRICA@ 2010-06-23
  • 打赏
  • 举报
回复
楼上的朋友能给我详细的设置吗?我和你碰到的问题一样,也是2003R2的,“因为没有打开的文档,所以这一命令无效",我照你说的dcom用管理员账号执行的话会有8007005错误,万分感谢!
siugwan 2007-01-04
  • 打赏
  • 举报
回复
已经解决。是Windows Server 2003的安全性问题。
在Microsoft Word 文档的DCOM里的"identity"选项里,设置成用管理员帐户执行即可。
最奇怪的是无论在DCOM里授予network service怎样高级的权限,还是没戏。
同是OFFICE,EXCEL的DCOM就没这么多花样。
siugwan 2006-12-29
  • 打赏
  • 举报
回复
zty0527(zty0527) ( ) 信誉:100 Blog 2006-12-29 18:25:13 得分: 0

在个看看模板是不是只读的,可能也是原因把,用office编程我们一般都是用office2000


word对dot模板格式的文件都是只读的,保存时默认都不会保存为 dot

siugwan 2006-12-29
  • 打赏
  • 举报
回复
zty0527(zty0527) ( ) 信誉:100 Blog 2006-12-29 18:22:12 得分: 0

你这个word.open函数是16个参数,我记得在office2000下面open是12,你换换12个参数的试试


我一直都是用office 2003的,没用office 2000来编,并且在其他机器上运行是没问题的。

WWWDJ1983 2006-12-29
  • 打赏
  • 举报
回复
mark
zty0527 2006-12-29
  • 打赏
  • 举报
回复
在个看看模板是不是只读的,可能也是原因把,用office编程我们一般都是用office2000
zty0527 2006-12-29
  • 打赏
  • 举报
回复
你这个word.open函数是16个参数,我记得在office2000下面open是12,你换换12个参数的试试
siugwan 2006-12-29
  • 打赏
  • 举报
回复
up
rooney321 2006-12-29
  • 打赏
  • 举报
回复
帮顶 等待高人出现
mincunbao 2006-12-29
  • 打赏
  • 举报
回复
等待答案
xuyiazl 2006-12-29
  • 打赏
  • 举报
回复
关注`~~`

很多本地没问题 但是到服务器上有问题~

--------------------------------------------------
大中小型网站和MIS系统开发

有意者请与本网站中心联系 网址:三达不溜点不坑你坑谁点坑么
siugwan 2006-12-25
  • 打赏
  • 举报
回复
把WORD类库复制到本地还是不行
还是贴代码吧
我是通过在WORD里定义书签,然后往书签里写内容。查了一下,觉得好像是 doc = wordapp.Documents.Open(ref _sourcepath, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue);没有打开模板



using WinWord=Microsoft.Office.Interop.Word;

/// <summary>
/// 向Word文档的书签写入内容
/// </summary>
/// <param name="SourcePath">源文件路径</param>
/// <param name="DestPath">目的保存文件路径</param>
/// <param name="BookmarkValues">书签内容;Hashtable的key为书签名,Hashtable的值为往书签写入的内容</param>
public static void SetValuesToBookmark(string SourcePath, string DestPath, Hashtable BookmarkValues)
{
object missingValue = Type.Missing;
object _sourcepath = SourcePath;
object _destpath = DestPath;
WinWord._Application wordapp = null;
WinWord._Document doc = null;

wordapp = new WinWord.Application();

try
{
doc = wordapp.Documents.Open(ref _sourcepath, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue);

foreach (WinWord.Bookmark bm in doc.Bookmarks)
{
if (BookmarkValues[bm.Name] != null)
{
bm.Select();
bm.Range.Text = BookmarkValues[bm.Name].ToString();

}
}
// wordapp.ActiveDocument.Bookmarks.get_Item(ref dateindex).Range.Text = DateTime.Now.ToString("yyyy年MM月dd日");
//wordapp.ActiveDocument.Bookmarks.get_Item(ref coindex).Range.Text = CompanyList.ToString();
wordapp.ActiveDocument.SaveAs(ref _destpath, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue, ref missingValue);
//wordapp.ActiveDocument.Save();

}
finally
{
wordapp.ActiveDocument.Close(ref missingValue, ref missingValue, ref missingValue);
//doc.Close(ref missingValue, ref missingValue, ref missingValue);
wordapp.Quit(ref missingValue, ref missingValue, ref missingValue);
doc = null;
wordapp = null;
}
}
zdywqy 2006-12-25
  • 打赏
  • 举报
回复
up
siugwan 2006-12-25
  • 打赏
  • 举报
回复
我再试试,但本地跟服务器上的WORD都是2003 SP2版本的.
Eddie005 2006-12-25
  • 打赏
  • 举报
回复
楼主对Word类库的引用是否“复制到本地”? 如果不是,可能会受到服务器Word版本的影响
siugwan 2006-12-25
  • 打赏
  • 举报
回复
我快要疯了,就这台服务器有这样的问题
executemylove 2006-12-25
  • 打赏
  • 举报
回复
mark
siugwan 2006-12-25
  • 打赏
  • 举报
回复
楼上的,不是这个问题哦,我都注明了代码在几台机器上运行都没问题,只是在正式的服务器上部署后才发生的。
cpp2017 2006-12-22
  • 打赏
  • 举报
回复
if(m_oWordApp != null)



{



// 这里就不要再判断if(m_oWordApp.Application.ActiveDocument != null)了



// 否则会出现“System.Runtime.InteropServices.COMException (0x800A1098): 因为没有打开的文档,所以这一命令无效。”



// 这样的异常!



m_oWordApp.Application.Quit(ref saveChanges, ref missing, ref missing);







m_oWordApp = null;



}
xyh2002 2006-12-22
  • 打赏
  • 举报
回复
是不是读不到你那个word模板
加载更多回复(1)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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