保存并打开远程文档

时间:2010-09-15 21:06:19

标签: c# ms-word vsto ms-office

我对微软Office开发一无所知,但我想构建一个插件原型,允许用户从远程存储库中保存和打开文档。也许以后可能会在服务器上构建一个版本控制系统 - 但是服务器端部分是关于它的最简单部分(在我的例子中)。也许我应该专注于让它一次用于一个办公应用程序 - 比如MS WOrd(除非人们认为excel更容易使用)。然后让我们定位Office 2007(就像我安装的那样)。

保存

存储库将存储Tagged文档(许多类型的许多标签)。保存文档AddIn需要先显示对话框并允许标记。 AddIn需要通过SOAP或REST api向我们的服务器提交一个标签数组和文档(Base 64编码?)。几个问题

  1. 这可能吗?如果有关于如何实现的建议?是否有一种机制可以访问您正在查看的文档的二进制数据(流?)?
  2. 是否可以从File-SaveAs对话中捎回来?或者我需要创建自己的菜单项吗? Obviuos前者可能更熟悉用户......
  3. 是否已经存在远程文档持久性的机制我可以背负?
  4. 打开

    一旦保存了许多文件,我们将需要一种检索文件/打开文件的方法。所以我认为我需要一个允许浏览文件的对话标签类型 - >标记值(树可能有更多级别,但希望从那里开始)。 ONce文件打开我认为API需要

    1. 进行RPC调用(SOAP / REST)以检索文档 - 解码内容(实际文档)并在Word中打开该流(例如)
    2. 我还希望将我的标记保存在内存中
    3. XML设计

      为了最好地可视化Word和服务器之间交换的数据,我们可以设想一个XML结构,如:

      <document name="recapOfTheGame.doc">
         <tags>
            <tag type="team">New York Yankees</tag>
            <tag type="team">Boston Redsox</tag>
            <tag type="city">New York</tag>
            <tag type="city">Boston</tag>
            <tag type="type">recap</tag>
         </tags>
         <content encoding="base64">AKJSGHKASHGFKSJDHGFKSJDHGFSKDJFHGSKJDGSKDJGSKDJFHGSDKJFH</content>
      </document>
      

      存储库资源管理器应该在树中的多个位置显示此文档;以下是一个存储库的示例,该存储库在五个位置显示此文档(基于标记):

      repository
          + untagged <not shown in XML>
          - team  
              + Tampa Bay Rays <not shown in XML>
              - Boston Resox
                     recapOfTheGame.doc
              - New York Yankeeys
                     recapOfTheGame.doc
          - city
              + Tampa Bay <not shown in XML> 
              - new york 
                     recapOfTheGame.doc
              - boston
                     recapOfTheGame.doc
          - type
              + box scores <not shown in XML> 
              - recaps
                     recapOfTheGame.doc
      

      其他想法

      我只提供了XML设计以使概念更加切实,我对其他存储标记的方法持开放态度(如果可能的话,在文档中)。基本上我可以在这方面给予任何指导。非常感谢。

      我以不同方式询问此问题,以检查回复是否会有所不同,Open WORD Document from Database OR WebService

      我接受webDav回答 - 下面是两者之间的共同点,这是露天的行为。

      谢谢

1 个答案:

答案 0 :(得分:2)

使用WebDAV打开/保存文档;虽然ymmv,办公室也支持这一点。如果您无法使用内置的Office支持,请使用WebDrive,NetDrive等,或构建自己的。

另一种替代方法是SharePoint协议,如果您的存储库支持它。例如,Alfresco克隆了部分内容。这也具有Word中内置客户端的优势。

CMIS比WebDAV更现代,你必须建立自己的客户端(看看Apache Chemistry)。如果你的资源库支持它,那么这可能就是这样;

您也可以通过VSTO使用SOAP或REST,但这些也属于构建您自己的客户类别。

关于标记:您可以将它们作为WebDAV属性传递。将它们作为CustomXML部分放入docx中也是值得的(或者只是文档属性 - 它们具有在Word UI中可见的优点),因此即使移动了文档,也可以使用它们。