Tag: vsto

什么是sheet = sheetList.FirstOrDefault(ws => ws.Name == string.Format(name,i)); 意思?

我正在处理Excel加载项,它具有以下代码行: sheet = sheetList.FirstOrDefault(ws => ws.Name == string.Format(name, i)); 这是什么意思? 更具体地说,我无法弄清楚ws => ws.Name含义。

如何在VSTO Addin的长时间运行的任务中在UI上取消button?

我在c#中创build了一个Excel Addin,通过几行1000行并对单元格执行一些更新。 这是非常长的运行,我希望用户select取消,如果需要的话。 因为默认情况下,UI在处理过程中没有响应。 Excel Addin框架中是否有这样的东西? 我是否创build一个新的线程? 那会不会导致更新UI线程的问题呢? 寻找一些大方向或链接的东西,让我开始。 编辑:给出的例子是创build一个简单的button点击事件。 我明白那个。 我需要在VSTO中取消一个更复杂的过程。

Excel:来自范围的以前的值

当我复制单个单元格并将其粘贴到多个单元格时,我想获得以前的单元格值。 如何确定Excel中SheetChange事件的新的和以前的单元格值? 对于检测单个单元先前的值是足够好的。 但是,当我试图复制一个单元格(CTRL + V,拖动等),并将其应用于多个单元格,以前的值都检测不到。 相反,值的数组等于第一个单元格,这导致我得出的结论是单元格在SheetSelectionChange事件发生之前发生更改。 任何想法如何处理这个? private void Application_SheetSelectionChange(object Sh, Excel.Range Target) { try { if (Target.Value2 != null) { foreach (Excel.Range range in Target) { // Each range in Target has same value as first value instead of previous value } } } catch (Exception ex) { // Log stuff } }

Excel.Workbook和Excel.Worksheet的通用方法

我正在写一个Excel加载项,我需要计算一些汇总统计的function之一。 这些应该作为名称添加到整个Workbook或单个Worksheet 。 现在我有两种方法可以完成每一件事情。 但是,这两种方法看起来几乎完全一样,区别在于第一个将名称添加到工作簿,将第二个添加到工作表。 有没有办法使这种方法更通用,以便根据传递的参数,我可以检查提供的工作表是否为null ,如果是这样添加到整个工作簿? /// <summary> /// Generate dynamic summary statistics as <see cref="Name"/>s in the specified <see cref="Workbook"/>. /// </summary> /// <param name="range">The <see cref="Range"/> of the data that needs summary statistics.</param> /// <param name="doCalculate">Defines which variables in the summary have to be calculated.</param> public DynamicSummaryStatistics(Range range, SummaryStatisticsBool doCalculate) { var […]

如何在Excel中保存数据(VSTO)在less数用户之间共享?

我必须加载大量数据,预处理数据,在less数用户之间共享,最后从用户那里收集更新。 这就是我在以前的项目中所做的 – 使用C ++创build了一个excel插件。 使用加载项代码加载内存中的数据并对其进行处理。 对于每种types的数据,我都将处理后的数据发送到表格并保存了一个新的excel文件。 这样,如果我有三种types的数据,我已经创build了三个新的Excel工作簿。 然后,我的用户打开了这些新的工作簿,进行了更改,并删除了一个包含其更改的文本文件(通过button)。 主要的excel保持轮询这些更新(文本文件),并加载它们一find。 这就是我从用户那里获取更新的方式。 我不是我在之前的项目中做的事情的粉丝,它产生了太多的临时文件(当然我可以删除这些文件)。 在我目前的项目中,我想使用C#VSTO工作簿,这样我就可以对Excel有更多的控制权。 我希望一旦我加载数据,我会要求我的用户在只读模式下打开相同的Excel,他们将进行更改。 在testing这个时,我意识到用户的excel(以只读方式打开)没有看到加载的数据。 而且他们的更改不会更新内存中保存的数据。 这可能意味着我不知道我在做什么。 你们有什么想法如何做到这一点? 我会很感激任何帮助/提示。

通过Workbook_Open事件更改VSTO选项卡的可见属性

我已经为Excel VSTO项目编写了Ribbon.xml文件。 标签元素看起来像这样: <tab id="myId" idMso="TabAddIns" label="My Tab" visible="false"> 当打开一个工作簿时,我希望该选项卡被默认隐藏,这是通过将visible属性设置为false来实现的。 接下来,我想在Workbook_Open事件中将visible属性更改为true。 这是我卡住的地方。 我不认为这会很难,但是我花了几个小时的时间search答案。 看来,大多数例子1)通过buttoncallback来切换标签的可见性,这不是我想要做的,或者2)能够访问function区的属性 ,而目前为止我还没有能够复制这些属性 (尽pipe大多数这些资源是旧的,所以我认为MS从那时起就把这些属性转移了)。 有谁知道如何轻松地将可视属性更改为true,以便显示该选项卡? 谢谢! 更新了其他信息: ThisAddIn.cs namespace Doodles_Reporting { public partial class ThisAddIn { public RibbonApi ribbonApi; private void ThisAddIn_Startup(object sender, System.EventArgs e) { } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new Ribbon(); […]

自动适应所有列,find有数据的最后一行和最后一列

我想: 确保Excel工作表的所有列都被加宽到足以适应列的每一行中的文本; 和 我想find最后一列和在该工作表中有数据的最后一行,即最后一个非空行和最后一个非空列。 具有背景颜色但没有文字的单元也被认为是非空的。 所以,比如,像这样的工作表: 看起来像这样: 而最后一个数据单元被报告为D10,因为它是最后一个脏单元,即使它没有文本。 什么VSTO方法/ API会给我上面的?

使一个艺术字不接受焦点

在VSTO / VBA for Excel或Aspose Cells for Java中是否存在一个API,以便将添加到Excel工作表的艺术字从不接收键盘或鼠标焦点? 例如,在下面的图片中,当我点击艺术字时,它会收到焦点。 当它具有焦点并且我敲击键盘上的Tab键时,焦点转到下一个艺术字,即它上面的那个艺术字。 我想这些艺术字对象永远不会接收键盘或鼠标的焦点。 有没有办法?

如何检测在C#中VSTO加载项的单元格文本更改?

我想使用一个事件或什么是当我在单元格中input时触发。 我尝试了SheetChange和SelectionChange事件,这不是我所需要的。 事情改变后,他们都被解雇了。 在单元格中编辑时,有什么方法可以触发事件? 像一些有XXXEditing / XXXChanging事件的控件?

VSTO将菜单项添加到Excel 2003与C#

我正在开发一个Excel 2003插件,并试图做我自己的菜单,如下所示: Application.ScreenUpdating = true; Application.MenuBars.Add("MyMenu"); Application.MenuBars["MyMenu"].Menus.Add("MyMenuItem1", null, null); 它似乎运行得很好,但我根本看不到我的菜单。 任何想法为什么?