有人可以帮助解决使用Microsoft.Office.Interop.Word
在代码中打开Word2003文件的问题吗?
我的代码如下。文档创建正常,如果我在创建后暂停代码,我可以通过资源管理器打开文件。代码冻结在最后一行。此时,可以看到文件锁定元文件出现在资源管理器和原始文件中。我没有看到错误。也许有一个看不见的对话,但否则我很难过。 提前谢谢。
首先将字节数组写入文件
var tmpFile = @"C:\donkey.doc";
File.WriteAllBytes(tmpFile, binary_document);
将文件作为某种类型的文档对象
打开Application app = new Application();
Document CurrDoc = app.Documents.Open(@"C:\donkey.doc");
冻结解决方案是重新安装Word2003,尽管由于此处标识的服务器问题http://support.microsoft.com/kb/257757我实际上完全放弃了这种方法。感谢您的帮助。
答案 0 :(得分:3)
试试这可能对你有帮助。
创建一个新的"桌面"目录里面的" C:\ Windows \ SysWOW64 \ config \ systemprofile \" 经过漫长的漫长的一天寻找解决方案后,它对我有用。
它会成为个人资料问题。
答案 1 :(得分:2)
1)作为控制台应用程序运行(我提到的那些帖子在控制台中运行良好)
2)尝试将CurrDoc.Activate()
放在CurrDoc = app.Documents.Open(@"C:\donkey.doc");
3)尝试声明byte[] binary_document = { 112 };
但不使用当前数组让File.WriteAllBytes()
更快地完成工作。
4)尝试Interop.Word Documents.Open is null
的最高投票帖子5)在Word 2007 Documents.Open returns null in ASP.NET
中尝试XP建议(搜索“xp”)6)尝试捕获异常(但看起来你的情况并非例外)
try
{
CurrDoc = app.Documents.Open(tmpFile);
}
catch (Exception eX)
{
//MessageBox.Show(eX.ToString());
Console.WriteLine(eX);
}
抱歉希望我不要混淆你。
参考 @Mike Miller ,主要观点是 app.Visible 未设为true;该应用程序处于活动状态,但只有它不可见!!学习新东西。谢谢。
我使用的是Microsoft Word 2010和Windows 7家庭高级版64位。
Document CurrDoc;
//avoid ambiguity so put in missing argument
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Application app;
private void btnMakeandOpenDoc_Click(object sender, EventArgs e)
{
//put in some byte value into the array
byte[] binary_document = { 112, 132, 32, 33,231,125,87 };
var tmpFile = @"C:\donkey.doc";
File.WriteAllBytes(tmpFile, binary_document);
app = new Microsoft.Office.Interop.Word.Application();
CurrDoc = app.Documents.Open(@"C:\donkey.doc");
//main point
app.Visible = true;
}
//close the opening doc file also
private void btnCloseDoc_Click(object sender, EventArgs e)
{
CurrDoc.Close(ref missing, ref missing, ref missing);
app.Application.Quit(ref missing, ref missing, ref missing);
}
答案 2 :(得分:0)
在调试时,如果您通过资源管理器手动打开此文件,最后一行也会尝试执行相同的操作。现在,我再也记不起Office 2003的行为了,但是2010确实提示您正在尝试再次打开同一个文件(或者至少它会对我这样做)。这很可能就是原因。
答案 3 :(得分:0)
冻结解决方案是重新安装Word2003,尽管由于此处标识的服务器问题http://support.microsoft.com/kb/257757我实际上完全放弃了这种方法。感谢您的帮助。
答案 4 :(得分:0)
我创建了一个桌面文件夹,但在此文件夹中:C:\Windows\System32\config\systemprofile
并授予服务帐户访问该文件夹的权限。不知道访问是否是必要的,但它有效。