问题描述
我的问题可能在以下问题中得到最好的描述: samples 但是,给出的答案对我不起作用。我在一家公司工作,但不能选择安装新的PC。
我写了一个Office(Word)加载项(Office API / JS),当用户打开我网站上列出的文档之一时,我希望它自动打开。当用户选择要下载的文档时,我先在Web服务器上打开该文档,然后再下载它,并使用OpenXML在文档中添加一些额外的OpenXML部件以使其打开加载项。这是代码:
//params:
// wordDoc - the WordProcessing object being updated
//_WebExtensionStoreReferenceId = GUID of Add-In (the <Id> tag in Add-In manifest)
//_WebExtensionStoreReferenceVersion = "1.0.0.1" - matches version in manifest
//_WebExtensionStoreReferenceStore = path to manifest file
//_WebExtensionStoreReferenceStoreType = "FileSystem"
public static void AddWebExTaskpanesPart(WordprocessingDocument wordDoc,string _WebExtensionStoreReferenceId,string _WebExtensionStoreReferenceVersion,string _WebExtensionStoreReferenceStore,string _WebExtensionStoreReferenceStoreType)
{
wordDoc.DeletePartsRecursivelyOfType<WebExTaskpanesPart>();
wordDoc.DeletePartsRecursivelyOfType<WebExtensionPart>();
WebExTaskpanesPart webExTaskpanesPart = wordDoc.AddWebExTaskpanesPart();
WebExtensionPart webExtensionPart = webExTaskpanesPart.AddNewPart<WebExtensionPart>("rId1");
We.WebExtension webExtension = new We.WebExtension() { Id = _WebExtensionStoreReferenceId };
webExtension.AddNamespaceDeclaration("we","http://schemas.microsoft.com/office/webextensions/webextension/2010/11");
We.WebExtensionStoreReference webExtensionStoreReference = new We.WebExtensionStoreReference()
{
Id = _WebExtensionStoreReferenceId,Version = _WebExtensionStoreReferenceVersion,Store = _WebExtensionStoreReferenceStore,StoreType = _WebExtensionStoreReferenceStoreType
};
We.WebExtensionReferenceList webExtensionReferenceList = new We.WebExtensionReferenceList();
We.WebExtensionpropertybag webExtensionpropertybag = new We.WebExtensionpropertybag();
We.WebExtensionProperty webExtensionProperty = new We.WebExtensionproperty() { Name = "Office.AutoShowTaskpaneWithDocument",Value = "true" };
webExtensionpropertybag.Append(webExtensionProperty);
We.WebExtensionBindingList webExtensionBindingList = new We.WebExtensionBindingList();
We.Snapshot snapshot = new We.Snapshot();
snapshot.AddNamespaceDeclaration("r","http://schemas.openxmlformats.org/officeDocument/2006/relationships");
webExtension.Append(webExtensionStoreReference);
webExtension.Append(webExtensionReferenceList);
webExtension.Append(webExtensionpropertybag);
webExtension.Append(webExtensionBindingList);
webExtension.Append(snapshot);
webExtensionPart.WebExtension = webExtension;
//TaskPane
Wetp.Taskpanes taskpanes = new Wetp.Taskpanes();
taskpanes.AddNamespaceDeclaration("wetp","http://schemas.microsoft.com/office/webextensions/taskpanes/2010/11");
Wetp.WebExtensionTaskpane webExtensionTaskpane = new Wetp.WebExtensionTaskpane()
{
DockState = "left",Visibility = true,Width = 320D,Row = 0U,Locked = false
};
Wetp.WebExtensionPartReference webExtensionPartReference = new Wetp.WebExtensionPartReference() { Id = "rId1" };
webExtensionPartReference.AddNamespaceDeclaration("r","http://schemas.openxmlformats.org/officeDocument/2006/relationships");
webExtensionTaskpane.Append(webExtensionPartReference);
taskpanes.Append(webExtensionTaskpane);
webExTaskpanesPart.Taskpanes = taskpanes;
}
我设置了一个文件夹来提供引用的加载项,并且在开发环境中运行它似乎可以正常工作。当我在我的质量检查环境中运行相同的代码(当然是不同的域和某些设置)时,似乎找到了加载项清单,因为它在Word中启动了TaskPane,但是它显示“我们找不到任务窗格打开。请与外接程序开发人员联系以寻求帮助。”加载项本身似乎可以正常运行,因为当我将其添加到功能区并单击按钮时,该加载项运行良好,甚至可以与Word文档一起使用。
我比较了在dev和QA环境中下载的两个Word文档,除了加载项清单的位置外,它们几乎相同。我使用Microsoft Office的Open XML SDK生产率工具进行了比较(顺便说一下,这是一个很棒的工具)。
我在质量检查域上没有管理员权限,因此无法在其中运行任何调试工具。有人有什么想法吗?
解决方法
您是否还在清单文件的“操作”部分中将名称“Office.AutoShowTaskpaneWithDocument”作为 TaskPaneId ?
<Action xsi:type="ShowTaskpane">
<TaskpaneId>Office.AutoShowTaskpaneWithDocument</TaskpaneId>
<SourceLocation resid="Contoso.Taskpane.Url" />
</Action>