如何使用C#从Excel的非相邻单元格中读取数据
i有一个Excel纸,其中我选择了多个单元,它们彼此之间不相邻.当用户单击按钮时,我们需要读取所有单元格数据,对其进行处理并将其写入其他单元格. 如果细胞彼此相邻,我能够获得范围并能够执行操作.但是,如果细胞不相邻,我将无法获得范围. selection.range 始终给出我们选择的最后一个单元格的地址. ,但我们需要获取所有单元的地址,我无法做到. 请任何人都可以建议我一种处理这种情况的方法. 示例代码: Range objRange = (Range) Globals.ThisAddIn.Application.Selection; int nColCount = objRange.Columns.Count; int nRowCount = objRange.Rows.Count; vinay, 我根据您的建议尝试了此代码, Range objRange = (Rang
0 2023-11-25
编程技术问答社区
c# excel图像
嗨,我已经在Excel工作表上插入了图像... 如何参考C#的此图像,非常感谢! 解决方案 您将需要使用剪贴板对象和Excel Interop组件.请参阅其他解决方案 有两种方法可以做到这一点:启动Excel并通过API获取图像,或使用Open XML格式直接打开Excel文件.我会推荐后者.请参阅: 有关格式的详细信息.
0 2023-11-25
编程技术问答社区
在运行时改变Outlook的收件箱图标
我使用VS 2010使用C#创建Excel 2007加载项.加载项是基于任务的UI.效果很好,喜欢它. 但是,我的用户没有管理员访问,并且由于需要VSTO而无法安装加载项. 有没有一种方法可以创建/端口此加载项到普通的基于COM的加载项,而不会引起vsto? 的引用 解决方案 他们不一定仅仅因为使用VSTO而需要管理权.确保安装了"每个用户"而不是"每台机器". 其他解决方案 ,或者您可以将其包装为.msi,以便在安装用户时,将其安装在系统帐户下. 即使将其转换为com,您也必须注册(regam)DLL,无论如何都需要管理权.最好不要穿过com路线...:)
0 2023-11-25
编程技术问答社区
在过滤器不变的情况下对Excel表的列进行重新排序
我正在通过VSTO 3.0遇到Excel 2007的问题.在我的项目中,我需要偶尔将柱子围绕.通常,这可以正常工作,但是我最近发现,当数据被过滤并且fitlered数据是不可连接时出现的问题. . 例如,使用此数据集: Ohio Eastern Kentucky Eastern Illinois Central California Pacific Florida Eastern 如果第二列上的过滤器不包括太平洋或中央,则以下代码会产生错误. ListObject table = FindReportTable(); // Get data to shuffle around. ListColumn tempColumn = table.ListColumns.Add(missing); Range range1 = table.ListColumns[column1].Range; Range range2 = table.L
0 2023-11-25
编程技术问答社区
VSTO问题-无法创建visual studio excel工作簿项目
当我尝试创建一个Excel 2007 Workbook项目时,在Visual Studio 2008中,我会得到以下错误: 无法创建项目,因为" Excel Visual Studio Design Time适配器加载程序"无法正常工作. Excel可能已禁用了加载项或使其不活跃,或者在您的信任中心设置中可能会禁用所有附加组件.检查Excel选项中的加载项状态.如果加载项有效并启用了,请重新安装或维修视觉工作室的办公室工具. 我已经验证了加载项不是非活动或禁用的,我试图维修和卸载/重新安装VSTO几次. 该怎么办? 解决方案 以防万一您尚未检查信任设置,此我在一个MSDN论坛上遇到了这一点: 为了维修工作,您必须 使用Admin运行VS命令提示 特权(右键单击,运行为 行政人员).然后运行此命令 线: c:> addinutil -addinroot:"%common Programfiles%\ Microsoft 共享\ vsta \ appIn
0 2023-11-25
编程技术问答社区
如何通过C#使用Application.OnKey而不涉及VBA代码?
我想在excel模板(.xlt)中使用udf,我已经使用Application.OnKey("^v","MyFunction");我想在用户粘贴excel中的单元格(即myFuction of myFuction of myFuction of myfuction of theworkbook.cs.cs i i i时)时使用单独的函数.无法工作... 预先感谢.. 解决方案 这行不通.您需要在vba中定义函数,并从该VBA函数调用.NET方法,就像在末尾说明: http://msdn.microsoft.com/en-us/magazine/cc163373.aspx
0 2023-11-25
编程技术问答社区
Excel 2007 VSTO插件在设置Font.Color时出现异常
我正在使用Excel 2007 VSTO插件,该插件正在向客户端抛出com例外,但在我的开发机器上调试时却没有. 该插件的作用是捕获Excel的启动事件,定义专用样式,然后将事件处理程序添加到Sheetchange事件中.每当在表中更改值时,单元格都会设置为新样式.所有这些都是为用户提供一种查看其更改的单元格的方式.代码如下: private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.BeforeSave += new Microsoft.Office.Interop.Excel.WorkbookEvents_BeforeSaveEventHandler(ThisWorkbook_BeforeSave); this.SheetChange += new Microsoft.Office.Interop.Excel.Wo
0 2023-11-25
编程技术问答社区
在Excel/VSTO中使用C#将列号改为列字母
如何找到列的名称或标题? 例如,如果我在excel中选择第5列意味着我希望结果为" e". 如何获取对应于列编号的字母或字母. 请帮助我使用代码 解决方案 使用Application.ActiveCell.get_Address(true, true, Excel.AlReferenceStyle.xlA1, missing, missing)怎么样,然后解析结果字符串或使用正则列来获取列标题? 我只是使用: string location = Application.ActiveCell.get_Address(true, true, Excel.AlReferenceStyle.xlA1, missing, missing); string tokens = x.Split("$".ToCharArray()); MessageBox.Show(String.Format("Column {0}", result[0])); 其他解决方案 publi
0 2023-11-25
编程技术问答社区
VBA中的VSTO。AddIn.Object有时会返回Nothing(空)。
给定: VSTO加载项 一个override object RequestComAddInAutomationService()返回我的场景中称为Facade的类的实例. Excel 2007中的VBA宏,可以访问AddIn.Object以获取立面并使用它. 很多次,这一切都很好. 几次从蓝色出来,这似乎不起作用. 更新:事实证明,有问题的特定用户.她一直都有它,其他人从来没有(?永远不会说"从不") 在这个"几次"中,我得到 错误:对象变量或块变量未设置 在试图访问Facade属性的代码线上.简而言之,我可以告诉您,RequestComAddInAutomationService()中的代码中没有任何容易出错的魔法,并且可以从Web中获取可访问加载项的VBA代码,看起来也不错.对于那些会花时间阅读它的人来说,更长的版本尚未到来: - ) 问题:有人知道为什么会发生这种情况?这是一个Excel问题吗? 按承诺的详细信息: myadd
0 2023-11-25
编程技术问答社区
有没有一种方法可以在Excel VSTO中只用C#而不用VBA来捕获热键/快捷键?
所以我想在我们的文档级excel vsto addin中捕获一些键命令.除了使用VBA并将Addin Talk与VBA交谈外,我似乎找不到方法.任何帮助/例子都将不胜感激. 我正在使用Excel2007. 解决方案 您只能通过api调用子类Excel并注意关键命令. 其他解决方案 一种方法涉及使用 addin-express 的第三方解决方案.他们的产品包括能够在功能区命令中添加键盘快捷键作为属性的能力. 另一种方法是通过一些 win32 API的使用低级键盘钩,通常称为 Windows sublassing .这是一个很好的解释,其中包含有关如何做的代码示例.请注意,将此代码用于VSTO中需要做的唯一"额外"的事情是将SetHook()方法移至Startup事件,而将Unnokwindowshookex()方法转移到关闭事件. 在此处查看有关MSDN的文章. 最后,使用了addin类的OnAction属性.此方法需要使用某些VBA(根据回调方法指向
0 2023-11-25
编程技术问答社区
不是一个有效的Office Add In
我使用VS 2008和VSTO开发了一个新的Office 2007 Addin.之后我去 Office-> excel选项 - > addins-> com addins,然后...如果我选择了我创建的.dll,我会得到错误 '' is not a valid Office Add In. 如果我在开发机器上使用Visual Studio 2008运行它,它可以正常工作,我会看到加载项. 我搜索了很多帖子,但没有解决方案. 解决方案 Excel一直拒绝加载项,因此我的解决方案是直接通过注册表进行的. 将以下文本保存为.reg文件,替换适合您项目的清单路径和友好名称,然后双击reg文件以将键添加到注册表中. Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\PROJECTExcelAddIn] "Man
2 2023-11-25
编程技术问答社区
从VSTO PowerPoint功能区调用VBA AddIn宏
我目前正在研究Excel 2010加载项,该加载项以前是Excel 2007加载项. 在切换计算机的过程中,我认为加载项被转换了. 我的一些客户表示,加载项不再使用Excel 2007,因此我尝试在Excel 2007和Visual Studio 2010中安装的VirtualBox中进行调试. 现在我收到错误消息: 您无法调试或运行此项目,因为未安装Microsft Office应用程序的所需版本. 我启动了一个新的Excel 2007加载项项目,并试图找到差异的内容,并提出了与DLL有关的想法,所以我更改了2010年的addin,直到看起来像2007年的Addin. 我仍然收到错误消息,说明我的项目无法被调试. 有什么我能忘记改变的东西. 不幸的是,写一个全新的addin不是一个选择. 到目前为止,这些问题还没有帮助我: Excel Addin,可用于Excel 2007和2010 部署办公室2010 Addin addin
0 2023-11-25
编程技术问答社区
如何在Excel中聚焦或选择单元格
如何使用C#将一个单元格聚焦在Excel VSTO中或使用VSTO中的C#选择第一个单元格? 解决方案 这是一种方法: Excel.Worksheet activeSheet = ThisAddIn.ExcelApplication.ActiveSheet; var range = activeSheet.get_Range("A1", "A1"); range.Select(); thisaddin是我的测试项目的名称. 其他解决方案 选择A2单元格,例如: Excel.Worksheet Worksheet = excel.ActiveWorkbook.ActiveSheet; Worksheet.get_Range([1,2], System.Reflection.Missing.Value).Select(); 其他解决方案 Excel.Application ExcelApp = (Excel.Application)Marshal.Ge
0 2023-11-25
编程技术问答社区
如何用VSTO插件项目轻松创建一个Excel UDF
我要做的是使用VSTO的C#" Excel 2007加载项" -Project类型创建Excel的用户定义功能(UDF)(因为我只想生成一些一般的UDFS).因为我只是想学习基础知识(无论如何)这就是我的代码的样子: using System; using System.Collections.Generic; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; using Microsoft.Office.Tools.Excel.Extensions; using System.Runtime.InteropServices; namespace ExcelAddIn1 { public partial
0 2023-11-25
编程技术问答社区
在Excel中选择VSTO自定义功能区
VSTO代码创建列表对象并在Excel 2007中应用表样式时,"表工具/设计"选项卡会自动激活.当用户选择一个非表格单元时,默认情况下将" HOME"选项卡激活.有没有办法抑制此行为或将活动选项卡重置为启动动作的自定义选项卡?我想要的是在创建桌子的动作之后可见自定义色带. 解决方案 我在 解决方案 a>也是. 在VSTO2010中,可以编程切换选定选项卡的能力 加入. norm estabrook 博客关于它. this.RibbonUI.ActivateTabMso("TabAddIns"); 因此,虽然没有可以锁定的事件,但至少您 可以切换选定的选项卡.例如,我要使用表 选择活动;当用户在我的不同床单之间切换 工作簿,我要更改他们所选的选项卡.每个纸将 对应于其他功能区选项卡. 如果您将其与SeptyChanged事件配对,则可以确保它们更改所选单元后,将它们带回适当的选项卡(而非TABHOME). 其他解决方案 仅适合所有必须支持Offi
0 2023-11-25
编程技术问答社区
为什么我在Excel插件中得到 "无法在证书库中找到清单签署证书"?
我有一个Excel加载项项目,该项目是在Visual Studio 2008中创建的.它有一些更改,因此我已经升级到Visual Studio 2010(我唯一可以使用的IDE是).不确定这是否引起了问题,但它是背景信息. 当我查看代码并进行编译时,我会收到错误,"错误1无法在证书存储中找到清单签名证书." 谁能告诉我这意味着什么以及如何修复它? 解决方案 您需要将该证书重新添加到计算机上或选择其他证书. 选择另一个证书或重新创建一张证书,转到项目的属性页面,单击签名选项卡, 单击商店的选择 单击"从文件"中单击 单击创建测试证书 一旦完成了,您应该能够再次构建它. 其他解决方案 我找到了... ... ..
0 2023-11-25
编程技术问答社区
为什么VBA中的VLookup会出现运行时错误1004而失败?
电子表格" sheet3"看起来像这样: S&P 500 DJIA 1/1/1991 795.4476 2973.09 1/2/1991 786.3856 2947.1 1/3/1991 775.4636 2905.19 1/4/1991 773.5364 2896.8 1/7/1991 760.2996 2847.9 1/8/1991 759.0029 2832.81 1/9/1991 750.8416 2788.67 1/10/1991 758.1719 2820.8 另外,单元格" F2"实际上是1/7/1991 Cell的副本和糊状. VBA代码看起来像这样: Sub badlook3() Dim BenchSI As Variant Dim BRange As Range Dim SIDate As Dat
0 2023-11-25
编程技术问答社区
Excel- 比较不同工作表的两个单元格,如果为真,则从另一个单元格复制数值
所以,我有一个工作表A和工作表b. 我想将两张纸上的列A与彼此进行比较. 如果该值相同(true),则与从Forksheet b的复制值(从f列中)(此值是电子邮件地址,当然在每行都不同). 我尝试了Vlookup,但我无法弄清楚.我的excel知识很差. 请提供任何帮助.谢谢 编辑: 我想在第一张纸中检查公司名称,以针对其他表格中的所有公司名称.对于那些相同的人,请复制电子邮件(我仅在Sheep2中使用) 解决方案 在您的目标字段中,您想使用vlookup这样的vlookup: =VLOOKUP(Sheet1!A1:A100,Sheet2!A1:F100,6,FALSE) vlookup参数: 您要查找的设定字段. 您想查找价值的表范围.定义表的第一列应是您想要的列与查找字段相比.表范围还应包含您要显示的值(F列). 这定义了您要在比赛中显示的字段. false告诉vlookup进行确切的匹配.
2 2023-11-25
编程技术问答社区
根据邮政编码确定USPS邮区的公式
我希望使USPS邮政区域的数百个信封排序更加容易.困难是必须根据原点邮政编码手动为8个US区域中的每个区域进行分类:91352. http://postcalc.usps.gov/zonecharts/zonecharts/ i有一个触点的电子表格,其中包括一个邮政编码.我已经基于" 913"设置了所有USPS ZoneCharts网站的单独表格,并将四个部分合并为一个(总计两列).然后,我使用左右功能获取第一列的前三个和最后三个数字,然后将它们放入自己的列中(现在总共三列): ZIP_BEG ZIP_END Zone 005 098 8 100 212 8 214 268 8 270 342 8 344 344 8 346 347 8 349 349 8 350 352 7 354 359
0 2023-11-25
编程技术问答社区
SSIS PowerShell脚本EXECUTE
我正在尝试打开一个受保护的Excel文件并在没有密码的情况下重新删除它.我创建了一个PowerShell脚本,如果我将ExecutionPolicy设置为remotesigned或unrestricted. 我想不启用脚本,而只是绕过它通过SSIS.我尝试了很多事情,以下是我尝试的,但它不起作用. EXECUTE PROCESS TASK Executable: C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe Arguement: -ExecutionPolicy ByPass -File "S:\PowerShell\UnlockExcel.ps1" 我也尝试过 -command 而不是 -file . 如果我在手动启用powershell脚本后运行脚本,则脚本没有任何问题,但是如果我将其放回限制并在SSIS中使用这些参数尝试,则该脚本无效. 解决方案 修改执行行以包括以下格式. -NoLo
0 2023-11-24
编程技术问答社区