Tag: vsto

Excel VSTO项目从Office 2013升级到Office 2016后无法加载

使用VS 2013加载项目时出现以下错误(安装了Office 2016) 无法创build项目,因为与此项目types关联的应用程序未安装在此计算机上。 您必须安装与此项目types关联的Microsoft Office应用程序。 C#项目最初创build为使用VS 2013与Office 2013和运行时作为“Visual Studio 2010 Office for Office Runtime”工具的Excel工作簿。 .Net框架也没有改变。 按照https://msdn.microsoft.com/en-us/library/bb772080.aspx,一切看起来都不错 当我查看.csproj文件时,发现Office Dll,Office版本和ProjectProperties部分的下列引用指向升级到Office后不存在的C:\ Program Files \ Microsoft Office \ Office15 \ Excel.exe 2016年 我需要在.csproj文件中手动修复以获取项目加载的所有东西是什么? <ItemGroup> <Reference Include="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <Private>False</Private> </Reference> <Reference Include="Office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"> <Private>False</Private> <EmbedInteropTypes>true</EmbedInteropTypes> </Reference> <Reference Include="Microsoft.Vbe.Interop, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"> <Private>False</Private> <EmbedInteropTypes>true</EmbedInteropTypes> </Reference> <Reference […]

screenupdating = false,Excel UI将冻结

我遇到了“screenupdating = false”的问题,Excel将冻结。 public partial class Sheet1 { private void button1_Click(object sender, EventArgs e) { this.Application.ScreenUpdating = false; } } 有没有人遇到这个问题? 谢谢。 语言 – C#操作系统 – Windows 7 64位工具 – Visual Studio Ultimate 2013 + .Net Framework 4.6.2 + Office Excel 2010 64位

如何在Excel VSTO插件中解决iManage限制

我们开发了一个Excel的VSTO插件,它从Web服务器拉取Excel表格,并允许用户操纵表单上的数据。 它与本地文件的副本一起工作,但我们并不真正关心这个副本。 但是,我们的一些客户也安装了“iManage Integration for Office”,这些客户经历了奇怪的行为。 在这种环境下,我们无法取消closures事件。 更具体地说,如果用户打开我们的文件之一并进行更改,然后closures文件,我们的事件处理程序会触发并提示它们保存对服务器上数据的更改。 如果他们select“取消”,或者如果他们select“保存”,并且由于某种原因保存失败,则我们将取消设置为“true”,以尝试保持文件处于打开状态。 通常这是完美的。 对于那些使用iManage的客户,无论如何都会closures文件。 如果我们的代码保存了文件的本地副本,那么文件就会closures。 如果本地副本尚未保存,则用户从iManage获得提示后会再次收到提示,询问是否要保存该文件。 从这里,用户可以点击取消,文件保持打开状态。 但是用户报告,在第一次点击“取消”之后看到第二个提示是令人困惑的。 而且他们不愿意禁用iManage插件。 我们希望在这种情况下能够保持文件打开状态,最好不要看到iManage提示符。 在为我设置的客户端(Excel 2010)的testing环境中工作时,我尝试了几件事情: 我尝试在工作簿级别BeforeClose和应用程序级别WorkbookBeforeClose设置取消; 没有一个工作(只要启用iManage,文件仍然closures) 我试图确保我的WorkbookBeforeClose的处理程序最后注册,通过注册它在工作簿级别的事件处理程序; 不用找了 我可以使用iManagefunction区手动切换到本地模式,这使一切正常,但我不知道是否/如何通过代码进行更改。 我可以在Globals.ThisAddIn.Application.COMAddIns中findiManage插件; 我尝试设置其Connect = false,但是这给出了一个错误,只有pipe理员可以连接/断开插件。 我可以在closures事件中保存本地文件,然后执行另存为创build第二个副本; 第二个副本现在处于活动状态,iManage将其closures; 然后我重新打开原始的本地文件。 它对用户来说看起来相当不错,但后来我有一堆COM引用旧文件上的单元格,这些都是垃圾。 我可能会循环并序列化它们并用新文件重新创build它们,但编码和运行将耗费大量时间,所以我正在寻找其他想法。 有什么办法可以保持文件的打开,而不会让用户做任何额外的事情? UPDATE 使用iManage 9.3.0.0和Excel 2010,我创build了一个参考Worksite Integration Interfaces Library(Ex)的VBAmacros。 事件发生,但文件仍然closures。 如果我没有设置Saved属性,并且在网格上input,我总是会收到iManage的提示,询问是否要保存。 Private WithEvents oWS As iManageExtensibility Private Sub oWS_DocumentBeforeClose2(ByVal Doc As Variant, IgnoreIManageClose […]

C#Interop定义一个工作表数组

我如何用4个worksheets定义一个数组? 例如,这些是我的worksheets : var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; var wsEvars = wb.Sheets["Evars"]; var wsProps = wb.Sheets["Props"]; var wsEvents = wb.Sheets["Events"]; var wsListVars = wb.Sheets["List Vars"]; 我想把它们包含在一个数组中,如下所示: var sheets = [wsEvars, wsProps, wsEvents, wsListVars];

C#Interop将JSON值添加到工作表

我怎样才能从一个JSON对象获得所有的值,然后一次显示他们的工作表? 这是我的JSON对象的外观: {"report_suites": [ { "rsid": "op-api-docs", "site_title": "API Docs Portal" }, { "rsid": "op-bigideas", "site_title": "Big Ideas" }, { "rsid": "op-education", "site_title": "Education" }, { "rsid": "op-education-dev", "site_title": "Education – Dev" }, { "rsid": "op-global", "site_title": "Global" }, { "rsid": "op-global-dev", "site_title": "Global – Dev" } ]} 预期结果: 这是我试图做到这一点,但它返回以下错误: “System.Collections.Generic.List.AddRange(System.Collections.Generic.IEnumerable)”的最佳重载方法匹配有一些无效参数 dynamic response = JsonConvert.DeserializeObject(responseXml); […]

在Excel(2010)电子表格中填充SQL Server数据

我试图从SQL Server中提取数据填充到Excel 2010中。下面的代码工作正常,但困难是,我不创build一个Excel电子表格编程,它是存在的,我通过插件的数据请求在用C#编写的Excel中。 即使我将光标设置为A10单元格,Excel将开始填写第一个单元格中的数据并覆盖头(已存在)。 请帮助解决。 码: OdbcConnection cnn; cnn = new OdbcConnection(azureConn); using (OdbcCommand command = cnn.CreateCommand()) { command.CommandText = "{call sp_Get_Excel_Data(?,?,?,?,?,?,?,?)}"; command.Parameters.AddWithValue("@StartDate", startDate); command.Parameters.AddWithValue("@EndDate", endDate); command.Parameters.AddWithValue("@startTime", startTime); command.Parameters.AddWithValue("@endTime", endTime); command.Parameters.AddWithValue("@smp", smp); command.Parameters.AddWithValue("@Reg", reg); command.Parameters.AddWithValue("@event", events); command.Parameters.AddWithValue("@userId", userId); cnn.Open(); //DataTable OdbcDataAdapter adapter = new OdbcDataAdapter(command); //DataSet DataSet ds = new DataSet(); adapter.Fill(ds); //Cast to DataTable […]

我可以在Office365中使用我的VSTO和VBA excel插件吗?

到目前为止,我所见到的所有问题都是陈旧的,并没有提供确切的答案。 另外我可以在本地使用什么,我可以在网上使用什么?

保存用户input以备后用C#

Howdee所有, 我有一个C#VSTO Excel加载项,我的组织使用它进行各种select以将数据导入到Excel中。 用户界面是一个窗体。 有一个下拉框,用于input带有可用参数的combobox,用户在那里selectinput来定义查询的参数。 我在列表框中显示参数,以便用户可以select他/她。 我有一个请求,可以保存参数input,以便用户可以快速回想,而不必一遍又一遍地input相同的信息,但不知道这样做的最佳方式。 基本上需要根据用户请求存储第一个下拉框和与列表框关联的参数。 正在创build一个文本文件,以保存到用户PC最好的方式去呢? 我想创build一个隐藏的标签,将它们存储在Excel中,但它只限于该文件。 我对C#比较新,所以不确定是否有更好的方式,我不知道。 干杯,瑞安

在没有pfx文件的情况下签署一个Excel / VSTO项目

我有一个结合了C#和Excel的VSTO项目。 我的雇主要求我使用我没有pfx文件的证书签名,我只有芯片卡上的证书。 我已经阅读了大多数在VSTO上签名的手册和问题,但都以某种方式假定我拥有pfx文件。 我在Visual Studio中的设置如下: “签署ClickOnceManifest”被选中,使用“从存储中select”来select来自芯片卡的证书 “签署Assemly”被检查。 我没有pfx文件,所以我点击“新build”,并创build了一个名为assemblySigningCertificate.pfx的证书(这可能是一个完全虚假的步骤,但这是我得到的唯一一个pfx) 发布项目后,我运行一个脚本,使用mage.exe更新签名,如 set AppPublishPath=publish set AppPublishVersionPath=publish\Application Files\diagramUnifier_1_0_0_0 copy bin\Debug\*.dll "%AppPublishVersionPath%" copy bin\Debug\*.dll.config "%AppPublishVersionPath%" copy bin\Debug\*.exe "%AppPublishVersionPath%" mage.exe -update "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from certmgs.msc " mage.exe -update "%AppPublishVersionPath%\diagramUnifier.vsto" -appmanifest "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from certmgs.msc " mage.exe -update "%AppPublishPath%\diagramUnifier.vsto" -appmanifest "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from […]

Excel双击一个function区button来启动macros

Excel 2013中有一个看似简单的问题,我找不到答案。 下面我描述了所有的细节。 非常感谢您的帮助。 围绕这个问题的情况: 我在Excel中创build了一个包含Macro1的“QuickMacro.xlsm”工作簿。 其次,我添加了自定义function区(通过Excel工具,而不是在VSTO),并在该function区上添加了所述的macros。 现在每当我打开一个excel工作簿时,我的计算机上的所有工作簿中都有一个快速的macros(并且所述macros的工作簿是隐藏的,所以我没有看到它,它不会干扰我的工作) 我的问题:我想Macro1只有当我双击function区上的图标启动。 单击应该什么也不做。 我对这个问题的研究:为了find一个答案,我已经通过了很多有关VSTO插件和macros指南的msdn材料。 与前者的问题是,我只是VSTO的初学者,后者,我发现只有“Worksheet_BeforeDoubleClick”事件,关于细胞激活,而不是function区button激活。 问:最后,我的问题是:怎么办? 有办法只用Excel来做,还是需要开始学习高级VSTO? 此外,我也希望从哪里开始挖掘解决这个问题的任何一般技巧(除了我已经广泛分析的msdn网站)。 任何书可能?