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

我需要启用或找到一种解决方案,可以在其中使用byte[]而不是硬盘将其保存到Web服务。

所以,
我通过转到网站并单击URL来打开文档,该单击将给我发送Word文档,然后选择“使用MS Word 2007打开”。

该文档已打开,如果我检查数据,我将:


ActiveDocument.Fullname = http:// [服务器名称或ip] / [某些iis文件夹] /file.asp?id = 353&type = doc`


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

即使打开了文档,磁盘也没有问题。
如何从当前byte[]中创建一个ActiveDocument

我已经找到了很多答案,说明无法完成。但是我也有一个客户,该客户的旧加载项可以根据当前byte[]执行ActiveDocument

谁能帮我。

最佳答案

您可以将ActiveDocument转换为COM interop IPersistFile,以将打开文档的字节的副本保存到本地临时路径,然后将它们读回以发送到Web服务。在Office中,如果不先保存到磁盘,就无法从活动文档中读取字节。请参见this MSDN blog for reference

COM.IPersistFile compoundDocument = Application.ActiveDocument as COM.IPersistFile;
compoundDocument.Save(filePath, false);
byte[] content = File.ReadAllBytes(filePath);

07-25 23:20