3

我正在创建一个 VSTO Office 2007 加载项。

我需要启用或找到一个解决方案,我可以使用byte[]而不是硬盘驱动器保存到 Web 服务。

因此,我通过访问网站并单击 URL 打开文档,单击向我发送 Word 文档,然后选择使用 MS Word 2007 打开。

文档打开,如果我检查我拥有的数据:

ActiveDocument.Fullname = http://[servername or ip]/[some iis folder]/file.asp?id=353&type=doc`

所以我认为这一切都在内存中,因为我没有原始文件或临时文件(如果存在)。

我从磁盘上没有问题,即使文件是打开的。我怎样才能byte[]从电流做一个ActiveDocument

我找到了很多答案,表明它无法完成。但我也有一个客户有一个旧的加载项,它byte[]从当前的ActiveDocument.

谁能帮我。

4

1 回答 1

2

您可以转换ActiveDocument为 COM 互操作IPersistFile以将打开文档的字节副本保存到本地临时路径,然后将它们读回以发送到您的 Web 服务。在 Office 中,如果不先保存到磁盘,就无法从活动文档中读取字节。请参阅此 MSDN 博客以供参考

COM.IPersistFile compoundDocument = Application.ActiveDocument as COM.IPersistFile; 
compoundDocument.Save(filePath, false);
byte[] content = File.ReadAllBytes(filePath);
于 2012-08-29T14:17:47.570 回答