Tag: vsto

如何避免使用dynamic模拟Excel.worksheet时?

我试图用NSubstitute或其他模拟框架和MSTest(Visual Studio 2010)来模拟Excel电子表格。 我不确定是否有比这更好的方法 – 这不适合testing: 这是一个例子(这是所有的原型代码,而不是很干净): int[] lowerBounds = { 1, 1 }; int[] lengths = { 2, 2 }; //Initialize a 1-based array like Excel does: object[,] values = (object[,])Array.CreateInstance(typeof(object), lengths, lowerBounds); values[1,1] = "hello"; values[2,1] = "world"; //Mock the UsedRange.Value2 property sheet.UsedRange.Value2.Returns(values); //Test: GetSetting(sheet, "hello").Should().Be("world"); //FluentAssertions 到目前为止,这么好:如果GetSetting方法与我的testing在同一个项目中 ,则通过。 但是当GetSetting在我的VSTO Excel-Addin项目中时,GetSetting函数的第一行中将失败并出现以下错误: System.MissingMethodException: Error: […]

如果有任何链接可以免费为C#的Excel“帮手”类库?

我正在寻找任何可用的免费Excel“助手”类为.NET编写(不必是C#)。 我想评估别人认为是有用的和generics静态(和非静态)辅助方法。 可以针对VSTO或定期的Office自动化,虽然这可能无关紧要。 我想我也应该指出,这个问题不是要求“有什么好的select(或自由select)使用Excel对象模型自动化。我不是真的想链接到SS齿轮等,虽然他们都是伟大的产品这不是问题的目的。 如果我在前面的段落中不够清楚:我不想要这样的答案 – 使用这个免费的(或不是免费的)第三方组件,而不是Excel对象模型代码。 所以基本上我所要求的是用户开发的C#代码库,其中包含VSTO,Office或Excel帮助函数,如用于处理菜单,色带,范围,工作簿,文档,xml的静态方法(例如提到的宅男)。 。

在x轴上具有多级标签的图表

我正在创build一个VSTO插件,其中包含一些年度数据的线图。 该数据每周包含数据点。 我想横轴在几个月内分组,如下图所示: 然而,我不能在VSTO的文件中find这是否可行的事情。 据我所知,一个Series只需要X轴的一维数组值。 有人对这个有经验么?

关于如何部署和共享VSTO解决scheme的最佳内容

通过基于办公室的解决scheme(特别是Excel)来推动视觉工作室和网点的发展,最好的文章或信息是关于如何让办公用品具有额外的二进制文件和程序集。 这个外部代码是否与电子表格打包在一起 如果人们开始通过电子邮件发送电子表格怎么办? 这个额外的程序集是否有任何开销? 二进制文件是否存在与电子表格分离的风险? 看起来微软已经推出VSTO超过5年了,但你读了很多混合的评论和问题。 我们是否在那些做大型VBA excel解决scheme的公司可以完全迁移到dotnet而没有任何实际的担忧?

带有WebBrowser控件的Excel CustomTaskPane – 键盘/焦点问题

我有这个确切的问题https://social.msdn.microsoft.com/Forums/vstudio/en-US/e417e686-032c-4324-b778-fef66c7687cd/excel-customtaskpane-with-webbrowser-control-keyboardfocus-issues?论坛= VSTO 这里还提到https://connect.microsoft.com/VisualStudio/feedback/details/521465/the-focus-issue-between-excel-cells-and-excel-customtaskpane-with-webbrowser-control 我正在写一个使用Visual Studio Professional 2013的Excel 2010插件。我用一个System.Windows.Forms.WebBrowser子程序创build了一个简单的CustomTaskPane。 该插件工作正常,我可以通过点击浏览网页浏览器,并改变checkbox的状态。 当我点击一个input文本框我得到焦点,我看到光标闪烁,但是当我开始input文本发送到Excel,并写入到一个单元格,而不是浏览器内的文本框。 当function区加载时,我添加自定义任务窗格。 private void Ribbon_Load(object sender, RibbonUIEventArgs e) { TaskPaneView taskPaneView = new TaskPaneView(); Microsoft.Office.Tools.CustomTaskPane myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, "Title"); myTaskPane.Visible = true; } 当我点击文本框然后F6它正常工作。 customtaskpane标题会稍微变暗,并在文本框中捕获文本。 我怎样才能解决这个问题,以便当我点击input文本框文本进入框,而不是Excel? 编辑:好的,我做了一些更多的testing。 如果我添加事件在我的TaskPaneView跟踪鼠标进入并单击他们的工作,但只有当我删除Web浏览器子。 这意味着Web浏览器以某种方式阻止这些事件,并阻止TaskPaneView了解它的重点。 如果我还将一个文本框表单控件添加到浏览器旁边的TaskPaneView中,则该文本框完全正常工作,并且TaskPaneView知道它具有焦点,然后浏览器中的input文本字段将开始工作。 如果我直接在Web浏览器上调用焦点方法,那么TaskPaneView就会明白它具有焦点,而且一切正常。 所以显然这个问题并不是真正的键盘问题,而是一个TaskPaneView的问题,当浏览器被点击时,没有被告知它有焦点,所以击键到了错误的地方。 如果我能find一种方法使TaskPaneView明白它已经聚焦每一个应该工作。

从VBA访问VSTO应用程序插件types(Excel)

我们有一个用于Excel的VSTO应用程序插件(不是文档插件),我们希望将事件暴露给VBA代码,以便VBAmacros可以在插件中引发此事件时执行一些操作。 我怎样才能得到的VBA代码能够订阅在VSTO应用程序插件中定义的事件? 我认为,因为在Excel过程中加载插件,这不应该太棘手,但还没有find一种方式。 顺便说一下,使用VS 2008和Excel 2007。 谢谢!

VSTO Excel 2007插件无法从networking共享进行安装

我有一个VSTO插件,我发布在networking共享。 在我的公司,每个人都可以从networking共享安装和更新这个应用程序。 在域之外,我无法安装这个定制。 我得到以下错误: 细节: ************** Exception Text ************** System.Security.SecurityException: Customized functionality in this application will not work because the certificate used to sign the deployment manifest for flow or its location is not trusted. Contact your administrator for further assistance. at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustPromptKeyInternal(ClickOnceTrustPromptKeyValue promptKeyValue, DeploymentSignatureInformation signatureInformation, String productName) at Microsoft.VisualStudio.Tools.Applications.Deployment.ClickOnceAddInTrustEvaluator.VerifyTrustUsingPromptKey(Uri manifest, DeploymentSignatureInformation signatureInformation, String productName) […]

VSTO添加用于Office 365

我有几个Excel添加。 如果我移动到Office 365,这些添加将可用? 有没有Office 365的开发支持(VSTO)?

自定义任务窗格如何在保持UI响应的同时切换可见性?

我正试图在Excel加载项中添加一个自定义任务窗格,该窗口的用途与“数据透视表”窗格类似。 目的是当select一个表时,自定义窗格应该出现,应该消失。 为此,我创build了一个自定义任务窗格: this._taskPane = Globals.AddIn.CustomTaskPanes.Add( new TableTaskPane(), "FooPane"); this._taskPane.DockPositionRestrict = MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoHorizontal; 当select表格时,窗格变得可见,并且当取消select时,窗格被隐藏: ListObject table = AddTable(); // Creates the table and populates with data. table.Selected += range => this._taskPane.Visible = true; table.Deselected += range => this._taskPane.Visible = false; 这实现了显示和隐藏窗格的效果,但不幸的是在UI中产生了一些延迟,在任务窗格在可见性状态之间转换时光标在单元之间“跳动”。 这似乎是因为Visible属性的setter阻塞,直到任务窗格完成转换。 在Excel 2013中,它从窗口一侧滑出,大约需要500毫秒。 我看不到任何方式来改变这种行为 – 我已经尝试在STA线程上调度属性设置,但它导致相同的阻塞。 我很乐意改变任务窗格,让它在没有转换的情况下立即出现(比如Pivot Table窗格),但是我也没有看到任何事情发生。 我做错了吗? 有没有办法解决这个直接的COM或一些其他隐秘的行为?

请解释为什么我能够在Excel VSTO中实例化“应用程序”界面

我有我的应用程序中的以下C#代码,它工作得很好。 它启动了一个新的Excel实例。 private readonly Microsoft.Office.Interop.Excel.Application _application; _application = new Microsoft.Office.Interop.Excel.Application(); _application.Visible = true; 我只是最近才注意到Application是一个接口types。 究竟发生了什么事,怎么可能呢?