我有一些我正在使用的ExcelDNA C#代码,并且在Excel中有一个我希望能够访问的xll插件。 我无法得到这个插件的源代码 – 它必须按原样使用。 那么有没有一种方法可以从C#访问这些function?
我想在Add-In XMLfunction区中创build一个像Pivot-Table一样的控件。 这就像在顶部的一个可点击的button和下拉菜单打开一个菜单。 使用VSTO丝带devise器我无法重现它。 实际上我需要的是这个控件的XML。 任何想法 ?
理想情况下,我的UDF将以double [,],double []的forms或作为自定义对象返回一些双重结果。 我希望它被全部存储在Excel中的一个单元格中,然后使用另一个UDF来提取它们。 它类似于caching计算的结果,并在以后按需显示。 可能吗?
我在ExcelDNA中创build了一个自定义function区(扩展ExcelRibbon),并重写了GetCustomUI()方法以从string列表创build菜单控件。 基本上: public override string GetCustomUI(string RibbonID) { string customUIXml = @"<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui' loadImage='LoadImage' onLoad='OnRibbonLoaded' > <ribbon> <tabs> <tab id='CustomTab' label='My Dynamic Tab'> <group id='SampleGroup' label='My Sample Group'> <menu description='description' enabled='true' id='menuItem' visible='true' size='normal' >"; foreach (string itemName in _ItemNameList) customUIXml += $"<button id='btn_tool_{itemName}' label='{itemName}' onAction='MyMethod' />"; customUIXml += @"</menu> </group > </tab> </tabs> </ribbon> […]
我主要使用ExcelDNA / C#/ Excel。 我基本上试图做的是使用以下代码将multidimensional array(即单元格的范围)转换为单数维数组: private static string[] MultiToSingle(object[,] multiArray) { List<string> tempList; string[] returnArray; tempList = new List<string>(); //Add each element of the multi-dimensional Array to the list foreach (object oneObj in multiArray) { tempList.Add(oneObj.ToString()); } //Convert the list to a single dimensional array returnArray = tempList.ToArray(); return returnArray; } 这工作的一种享受,并在我的项目中使用了很多次,但是我想添加一些更多的function。 当我尝试运行这个函数的范围包含一个空单元格,它错误非常可怕,目前我只是有一个错误消息的try / […]
我将VSTO应用程序转换为与ExcelDNA兼容的应用程序。 但是,最主要的问题是,与VSTO相比,ExcelDNA没有控制对象。 在VSTO中:Microsoft.Office.Tools.Excel:你可以添加一个listObject Worksheet worksheet = Globals.Factory.GetVstoObject( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]); listObj = worksheet.Controls.AddListObject(cell, "list1"); 随后,您可以设置数据源 listObj.DataSource=list; 但是,当我试图在ExcelDNA中使用Micorsoft.Office.Interop.Excel使用listObject。 我无法得到所需的结果,listObject返回空白数据。 ws=excelApp.ActiveWorkBook.ActiveSheet; Excel.Range rng=ws.cells[1,1]; //set the datasource rng.Value2=list; listObj=this.ListObjects.Add( Excel.XlListObjectSourceType.xlSrcRange, rng,Missing.Value, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlNo, Missing.Value); 我不能使用Globals.Factory …因为这不是VSTO程序。 因此,我想出了以下解决方法。 有什么我做错了吗? 我怀疑这是在ExcelDNA中给出问题的数据源。 我能做些什么来解决这个问题? 我想如何将VSTO程序转换为ExcelDNA中的等价物?
我有两件插入到excel中的技术。 一个是实现IDTExtensibility2接口的COM Addin。 另一个是通过Excel-DNA实现的RTD服务器。 这两个对象都是由excel实例化的。 他们每个人都需要在运行时访问第三个对象来获取数据并将其推送到excel。 由于我不能把这个对象交给excel插件,所以我把它做成了一个单例,希望每个人都可以共享相同的实例。 不幸的是,在运行代码时,每个人都看不到另一个创build的单例对象的实例。 我怎样才能得到这两个插件引用同一个对象? 假设两个插件都需要保留,我宁愿不进行进程间通信设置。 TL / DR两个excel插件需要共享第三个对象,但是使第三个对象成为单例不起作用,因为每个excel插件都看不到其他插件创build的第三个对象的实例。 这个问题的解决scheme是什么?
我正在用F#和Excel-DNA重写我的Excel VBA加载项。 下面的Formula1工作。 它遍历当前选定的单元格,并将trim应用于每个单元格值。 Formula2是我在应用Functional和F#概念方面失败的尝试。 我不确定如何将范围返回到Excel。 公式必须返回一个单位。 有人可以帮我吗? Formula1(作品): let Trim (rng:Range) = for cell in rng.Cells do let cel = cell :?> Range if not (cel 😕 ExcelEmpty) then cel.Formula <- cel.Formula.ToString().Trim() 公式2(不起作用): let Trim2 (values:obj[,]) = values |> Seq.cast<obj> |> Seq.map( fun x -> x.ToString().Trim() ) 有人询问了返回单元或调用函数的原因。 那是下面。 type public MyRibbon() = inherit […]
我想要构build具有以下function的Excel插件: [ExcelFunction()] public static double myAverage1(double[] inputVector) { return inputVector.Sum()/inputVector.Length ; } [ExcelFunction()] public static double myAverage2(DateTime[] TS1_DateTime) { return 12.5; } 问题是Excel不识别函数myAverage2 。 问题与DateTimetypes有关,我试图将其更改为stringtypes,但函数是无法识别的。 任何想法如何解决这个问题? 我最终想达到的是给这个函数两个DateTime数组,并取回这些交集。
希望有人有类似的问题,将能够帮助… Visual Studio 2010 我有一个使用excel-DNA和C#创build的xll文件。 我可以将它附加到excel电子表格中,当我使用Excel表格中的方法时,我的xll被加载并在Visual Studio 2010项目中达到了中断点。 我也可以看到所有传递的参数都具有正确的值。 但是,一旦我点击进入开始debugging代码,它会粉碎我的Excel。 我也尝试了简单地把第二个断点和执行代码前进,但它也粉碎excel。 不知道该怎么尝试。 所有的build议都欢迎。