Tag: vsto

Excel VSTO在Excel崩溃后继续添加软禁用。 当excel重新启动时,任何运行addin.Connect = true的方法

我开发了一个从数据库中提取数据的excel插件。 有一些情况下,Excel变得无响应和崩溃。 然后,我重新启动Excel,外挂程序列在活动的AddIns中,但不显示在function区中。 然后我必须去文件 – >选项 – > AddIns-> Com AddIns->取消勾选选中的AddIns,然后再次相同的path,并再次检查AddIn,它显示出来。 我需要帮助检查每当Excel重新启动我应该检查是否添加连接(或用户可见),如果没有,连接它并显示。 在我惨淡的尝试中,我尝试了以下内容: private void ThisAddIn_Startup(object sender, System.EventArgs e) { int i =1; try { foreach (COMAddIn addin in Application.COMAddIns) { if ( addin.Description.Contains("ExcelAddInNewTest") ) { // addin.Guid.ToString(); addin.Connect = true; MessageBox.Show(addin.Description.ToString()); //if (addin.Connect != true) //{ // addin.Connect = true; //}// addin. } } […]

C#中用于Excel的VSTO示例,用于设置和使用工作表更改事件?

我正在尝试为private void ThisAddIn_Startup(object sender, System.EventArgs e)方法中的工作表更改事件的事件处理程序。 如果我接受通过使用Tab键添加的条目,则将以下行添加到private void ThisAddIn_Startup(object sender, System.EventArgs e) : activeWorksheet.Change += ActiveWorksheet_Change; 并添加以下方法: private void ActiveWorksheet_Change(Excel.Range Target) { } 这编译但引发exception: activeWorksheet.Change += ActiveWorksheet_Change; 有关使用VSTO和C#的Excel加载项使用事件的示例有参考吗? 最近有没有关于使用VSTO和C#的书籍?

如何禁用function区中的Excel内置RibbonButton(可视化devise器)?

是否有可能将一个Excel中内置的RibbonButton 2010设置为enabled=false从Excel VSTO加载项 ?

在运行时添加Excelfunction区控件(VSTO 2005SE)

有谁知道如何在运行时用VSTO 2005SE修改Excelfunction区的内容? 不仅更新标签或dynamic菜单,而且还添加或删除button,选项卡,组,下拉等。在运行时不仅意味着我的加载项启动,而且在使用Excel时。

在Excel 2007中从SQL Server中检索数据

我有以下要求 我有存储在SQL Server 2005数据库中的关系内容。 我想检索这些数据,将其转换并显示在Excel 2007文档中。 我希望通过点击一个button就可以从Excel中取消这个function。 据我所知,我有以下select… 在Sql Server中创build一个视图,并使用数据连接在数据透视表中引用它 。 使用VSTO创buildExcel工作簿并创build工作簿从中提取数据的Web服务 创build一个Web服务,并使用带有XMLHTTP请求对象的JScript 我目前只有一些这些方法的经验(我很熟悉SQL Server,虽然不是透视表,我创build了许多Web服务,虽然我从来没有使用VSTO,我广泛使用的JavaScript,但从来没有在Excel操作的上下文中)。 你会推荐以上方法之一还是有更好的方法来做到这一点?

我怎样才能获得我可以调整Excel工作表的最大尺寸?

我有一个Excel的C#加载项,我需要将数据放在工作表上。 我这样做: // Now build a string array of the results string[,] resultArray = new string[objects.Length, length]; // Fill in the values Excel.Range resultRange = worksheet.get_Range("A2").get_Resize(objects.Length, length); resultRange.Value = resultArray; 我已经省略了一些不重要的步骤。 基本上,我传递了一个对象数组,我从第一个types获取types,并使用属性来构build列名称列表。 我把它放在第一行。这就是为什么我在第二行开始数据。 我遇到的问题是,我有一个Excel 97-2003工作簿(最大行约65K行),我试图带入105K对象。 它resize窒息。 我想检查一下,如果我的resize是有效的,所以我可以告诉用户,但我似乎无法find“MaxRows”或类似的属性。 有一个吗?

Excel 2007 VSTO加载项即使成功安装后也不可见

我有点混淆了Excel 2007的插件行为。 任何想法是高度赞赏。 这是我按时间顺序做的事。 我有一个Excel 2007的VSTO插件,它构build和debugging文件,所以我发布到一个文件夹 我去文件夹并运行安装插件的安装程序。 下次我打开excel时,插件是可见的。 到目前为止完美! 然后我去Excel办公室button – > Excel选项 – >加载项 – >pipe理 – > COM加载项,并删除我刚刚安装的插件。 这使得插件脱离了我的excelfunction区。 如预期! 但在这一点上,我的插件已安装,只能从活动插件列表中删除。 正确吗? 如果是正确的,我如何重新添加它,因为我看不到它在非活动插件列表中。 我得到它的唯一方法是从添加/删除程序中删除它并重新安装并重新启动Excel。 这是唯一的方法,或者我可以以某种方式重新添加插件,因为它已经安装。

导出Excel到数据集(错误 – 定义过多的字段)

我正在将Excel(.xls)工作表导出到数据集。 在那个excel我有16列。 导出时,我得到错误“太多的领域定义”.. 这是我的代码部分.. { string strFilePathOnServer = ConfigurationManager.AppSettings["RevenueDumpFileLocation"]; String sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(strFilePathOnServer) + RevenueDumpFileUpload.FileName + ";Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; string strPostedFileName = RevenueDumpFileUpload.PostedFile.FileName; if (strPostedFileName != string.Empty && RevenueDumpFileUpload.PostedFile.ContentLength != 0) { RevenueDumpFileUpload.PostedFile.SaveAs(Server.MapPath(strFilePathOnServer) + RevenueDumpFileUpload.FileName); RevenueDumpFileUpload.FileContent.Dispose(); } OleDbConnection Exlcon = new OleDbConnection(sConnectionString); try { //Exlcon.Open(); } catch { return; } OleDbCommand objCmdSelect […]

为什么Application.get_Caller(Type.Missing)返回一个负整数?

get_Caller(Type.Missing)方法有些奇怪。 它返回一个负整数-2146826265 ,而不是Range对象。 有没有人遇到过这个问题? 为什么呢,我该如何解决呢? 谢谢。 Excel.Range range = (Excel.Range) application.get_Caller(System.Type.Missing); 上面的代码将失败,如果我尝试显式用户typesExcel.Range 。 错误消息说,'不能将types'int'转换为'Microsoft.Office.Interop.Excel.Range'。 编辑: 获取单元的调用者的意图是将其传递给我的以下function: private string getResultFromResultSheet(Excel.Range originalSheetRange, Excel.Worksheet resultSheet) { string DataResult = ""; try { string os_currentAddress = originalSheetRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing); Excel.Range currentRRange = null; currentRRange = resultSheet.get_Range(os_currentAddress, Type.Missing); if (currentRRange != null) { if (string.IsNullOrEmpty(Convert.ToString(currentRRange.Value))) DataResult = ""; […]

在UDF上使用Excel内置函数

我不知道为什么由于某些原因Excel内置函数=SUM()不能真正总结自定义UDF创build的结果。 它总是以0结尾。 例如,我有一个叫做myUDF的下面的UDF,它将返回项目的数量。 对于单元格A1 : 公式: =myUDF('ItemA')结果:10 对于单元格B1 : 公式: =myUDF('ItemB')结果:15 所以当我做=Sum(A1:B1)并把公式放在单元格C1 ,它不会返回25而是0。 我试图使用一些数据格式的东西(转换为数字),但仍然没有运气。 这里有没有人有过类似的问题? 任何想法的原因呢? 谢谢。 编辑:代码示例 public object MyUDF(string id, string pk, string param1 = "", string param2 = "", string param3 = "", string param4 = "") { object result = null; string strFormula; double n = 0; DateTime dt; try { […]