Tag: devise

C#Excel COM加载项的devise结构

我正在构buildExcel 2007+的COM加载项,这将是一个应用程序的意义在于: 它在function区上有自己的选项卡,并带有控制其操作的button(如“创build新计划工作簿”/“刷新工作簿”等) 它会从Excel(“应用程序”和“工作簿”)中捕捉事件并对其执行操作。 它应该有一个基于上下文的任务窗格,并将从我的插件发送给它的数据。 为了支持这一点,我想以这样一种方式来构build代码,以便我将来可以很容易地对其进行修改(例如,在function区上添加一个新button),而不是到处都有意大利面条。 我最初的想法是创build一个单独的类,这将是我的“Addin应用程序”,并初始化与Excel应用程序本身,例如: public class Connect : Extensibility.IDTExtensibility2 { private Excel.Application _excelApplication; private MyAddinApplication _myAddinApplication; public void OnConnection(Object application,…) { _excelApplication = (Excel.Application)application; _myAddinApplication = new MyAddinApplication(_excelApplication); } } 这个MyAddinApplication类将会捕获Excel的事件(比如打开一个工作簿,closures等),然后相应地处理它们。 它还会捕获任何Ribbon事件或callback,然后根据命令模式触发操作。 我的问题是,这是一个Excel COM插件的合理方法? 将Excel应用程序封装在由“Addin Application”类引用的单独的“事件处理程序”类中会更好吗? 我没有真正看到我的研究中的复杂COM插件,只有那些有一个或两个button或不捕捉任何事件。

为什么Excel的“评估”方法是通用expression式评估器?

最近涉及到的一些问题涉及Application.Evaluate方法可以从Excel VBA调用。 旧的XLMmacros语言也暴露了一个EVALUATE()函数。 两者都可以是非常有用的。 有谁知道为什么被暴露的评估者可以处理一般expression式? 我自己的预感是,Excel需要让人们从string地址获取范围,并获得命名公式的值,并且只需打开expression式评估程序的入口是最简单的方法。 (VBA版本的帮助确实表示它将“将Microsoft Excel名称转换为对象或值”)。但是,当然,您不需要评估任意expression式的能力就可以做到这一点。 (也就是说,Excel可以提供一个Name.Evaluate方法或其他东西)。 Application.Evaluate 。评估似乎有点…未完成。 这是完整的行为没有很好的logging,并有一些怪癖和局限性(如查尔斯·威廉姆斯在这里描述: http : //www.decisionmodels.com/calcsecretsh.htm )与暴露。 我想答案可能只是“为什么不揭露它?”,但我有兴趣知道什么样的devise决定导致了这个function的forms。 如果没有,我会有兴趣听到其他的预感。

如何使用msoPattern常量将图案应用于使用Perl Win32 :: OLE的Excel图表中的一系列图案

我正在使用Win32 :: OLE Perl模块来更改图表中特定数据点的模式。 我可以这样做: $chart->SeriesCollection(2)->Points(5)->{Interior}->{Pattern} = xlPatternUp; 例如。 要清楚这与预期完全一样。 然而,xlPattern *常量只允许Excel识别模式的一个子集。 看来整套模式是在msoPattern *常量中指定的(至less是我想要使用的那个)。 我试图以相同的方式使用msoPattern *常量之一: $chart->SeriesCollection(2)->Points(5)->{Interior}->{Pattern} = msoPatternWideUpwardDiagonal; 但是这没有效果。 数据点将以“固定”(默认)模式呈现。 我已经确认我正确导入了常量,例如: use Win32::OLE::Const 'Microsoft Office 12.0 Object Library'; 我怎样才能使用msoPattern *常量来改变模式?

当前价格按离散值累计进度

我必须在Excel中实现一系列公式,这些公式的要求似乎无视任何逻辑或简洁的方式,只用公式来完成。 简短的介绍: 基于1)产品作为一系列批量采购支付的价格,以及2)公司使用支付的价格对产品的每日消费,来确定(并显示)产品的“有效”内部成本的时间线对于每次购买,直到所购买的金额被消耗,然后继续下一次购买。 简化的细节: 我们有一个表格“PurchSums”与产品的批量购买logging:(这实际上是一个数据透视表) | A | B | C | D | 1: Product Name Purch Date Rate Amount … 23: Prod-Q 12/18/2012 $3.15 123.7 24: 1/24/2013 $3.05 748.2 25: 2/27/2013 $2.86 650.0 … … 所以最初内部价格应该是3.15美元/磅,直到第一个123.7磅被使用,那么它应该转换到3.05美元等等。 我们有一张白天消费的“卷”:(产品消费从3月1日开始) | A | B | C | D | 1: Product Name 3/1/2013 3/2/2013 3/3/2013 … […]

表中缺less数据

我有一个SQL挑战 我的数据提供商给我发送一个CSV格式的数据,如下面的例子现在,由于某种原因文件丢失的数据也许是为了节省空间,使表小,我不知道。 Field_1和Field_2中缺less数据。 数据出现在一个logging中,并且下列logging具有NULL值,直到下一个logging。 所以在下面的示例Field_1的第二个和第三个logging中的值应该是“ID_1”而不是NULL相同的Field_2的值应该是ABC而不是NULL Field_1 Field_2 Field_3 ———————– ID_1 ABC Value_3 NULL NULL Value_3 –> ID_1 ABC Value_3 NULL NULL Value_3 –> ID_1 ABC Value_3 ID_2 CDE Value_3 NULL NULL Value_4 –> ID_2 CDE Value_4 ID_3 EFG Value_X 到目前为止,我已经写了一个excel模块,在我导入数据之前修复了我的数据,但是这些文件将会变得非常大,而excel将无法处理这个问题。 所以我的select是使用TSQL游标,并执行一些将填写数据的过程。 或者我可以构build我的select查询来弥补缺失的数据,并在运行select数据之前生成填充数据的虚拟表 什么是最好的解决scheme呢? 我的要求是低维护和空间效率之间的快乐媒介我正在谈论17个缺失数据的领域和一个月约15万条logging。 感谢帮助

dynamic地查找两个表之间的匹配; 一个是文字,另一个是search模式

EXCEL – find两个表格之间的匹配 https://drive.google.com/folderview?id=0B2WLaA0HlUBVWnlwaFRGMmdwaVU&usp=sharing – excel文件 FILE:vraag.xlsm 我想做一个dynamic的解决scheme,从一个表中search一个文本模式,如果它也在另一个表的文本中(在不同的列)。 (dynamic的,我的意思是如果元素被添加,删除,改变) 因此,search列'元素'的文本中是否可以find'ID_type' 列中的元素 ! 表A [ T_example ]:在一列中包含tekst(在另一个表的其中一个元素内) 表B [ T_rec_by_type ]:包含几个可能的string 编辑:接下来似乎是一个错误的方法 : MATCH() =IF(ISNA(VLOOKUP(A23;T_rec_by_type[ID_type];1;FALSE));FALSE; "File found in row " & MATCH(A23;T_rec_by_type[ID_type];0)) 在第一个例子(完全匹配,所以不像search模式),它的工作原理。 但这个想法是在文本中search以findsearchpattern …并通过VLOOKUP从另一列(在这个体育场中只是ID_type )返回一个值。 在线答案中find一个可能的解决scheme EXCEL – 通过从其他工作表中search关键字来查找类别 https://drive.google.com/folderview?id=0B2WLaA0HlUBVWnlwaFRGMmdwaVU&usp=sharing – excel文件 FILE:SearchAMatchtingStad.xlsm 希望find一个解决scheme…通过这个答案我的情况下,我试了一下,但不幸的是没有成功。 那么我做错了什么? (我首先尝试了表,列和… =IFERROR(IF(INDIRECT("Sheet1!A"&MAX(IF(ISERROR(SEARCH(CONCATENATE("*";Table1[[stad 1]:[stad 3]];"*");[@shop]))+(Table1[[stad 1]:[stad 3]]="");0;ROW(Table1[[stad 1]:[stad 3]]))))=Table2[[#Headers];[antwerpen]];[@sales];"");"Not found") 找出我的错误/问题,为什么它不工作…我只做了一个单元格,但没有运气) […]

在Java中表示Excel表格值的好方法

考虑我有一个以下格式的Excel表: 人 年龄 富29 酒吧27 现在我想读取这些值(使用POI HSSF)并且必须处理它们。 什么是最好的方式来做到这一点? 请注意,我的应用程序中没有Object Person,因为可能会出现在Excel表中的值是任意的(即,可能不是人名和年龄)。 所以,我需要使用一些HashMap来存储这些值。 在多行的情况下,有一个List!是好事吗?

返回ExcelvariablesC#

我有一个Windows窗体应用程序与5个方法(每个基于用户单击button)。 在每种方法中,我想以同样的方式打开相同的Excel文件。 但是,在每种方法中,我想在工作表上select不同的范围。 我试图创build一个函数打开Excel文件,而不是重写5次… // method to open Excel and load a the workbook based on date selected. public Tuple<Microsoft.Office.Interop.Excel.Application, Workbook, Worksheet> openExcel() { Microsoft.Office.Interop.Excel.Application excelObj = new Microsoft.Office.Interop.Excel.Application(); string fileName = @"C:\Users\" + userName + @"\Documents\Visual Studio 2015\Projects\ProgramForMom\ProgramForMom\bin\Debug\Excel Files\" + frm2.year.Text + " Expenses"; Workbook wb = excelObj.Workbooks.Open(fileName, 0, false, 5, "", "", false, […]

我应该使用什么数据库?

我的vb.net代码从1901年的每个季度计算公司股票价格的增长率,并将其存储在数据表中。 这需要一段时间(10-15分钟)。 我想在计算好数据表后将信息保存起来,这样我就不用每次运行程序都重新计算过去的增长率。 当我打开我的程序时,我希望数据表包含任何已经计算好的增长率,所以我只需要计算新增季度的增长率。 我应该将我的数据表存储在某种数据库中,还是有另一种方法来做到这一点? 我的数据表是相当大的。 它目前有450列(从1901年到现在每季度一个),可以有成千上万的行(每个公司一个)。 这对于Microsoft Access来说太大了吗? 微软的Excel会成为一个select吗? 谢谢!

find一个通用名称

对于同一家公司拥有许多不同名称的大型数据库,我有一些问题。 基本上,我要做的是find代表公司X的所有名称,并将它们更改为“X”。 这样,如果详细名称是“X SL”或“Shipment Regarder ASL”或“oubiyubib(2)”,并且我们知道所有这三个代表公司“X”,我必须寻找他们,并用手改变它们。 还有一些名为“NISA”的意思是代表公司所在的行业,因为有时候我要处理的文件是错误的。 为了解决这个问题,我创build了一个存储所有公司所有已知名称的Excel,然后相应地replace列表中的名称。 存储数据的结构如下所示: 所以第一列有“NISA”,第二列有公司的通用名称,而后面的列是公司的已知名称。 全名列表按字母顺序排列,用“1”表示。 然后,有“INDICE”详细说明三个字母组合的第一个实例出现的行。 这样,以“3SU”开始的名字在第28行中。“INDICIE 2”是详细描述“INDICE”中的第一个字母,因此是索引的索引。 这意味着以“A”开头的“INDICE”中的第一行将在第39行。 所有这一切的主要原因是因为数据库在某些情况下迅速增长到包含超过25万行和超过100列,而且因为有时“3MSA”与“3MSL”是完全不同的公司,所以事情必须逐字逐句检查它是哪个适当的通用名称。 所以大部分的代码是这样的: Dim listRow As Long, searchRow As Long Dim searchedName As String, genericName As String Dim problem As Boolean problem = False listRow = 2 searchRow = 2 searchedName = "" genericName = "" Do While Cells(listRow, colmnNames) <> […]