Tag: .net

为什么当我使用没有OleDBConnection对象的OleDbDataAdapter对象时,.NET 2.0应用程序在.NET 4.0下崩溃?

这是一个使用VS 2005编写的.NET 2.0应用程序。它在运行.NET 2.0的系统上运行良好,但在运行.NET 4.0的系统上发生严重崩溃。 这是代码的关键部分: string selectCommand1 = …. string connectionString1 = …. using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand1, connectionString1)) { try { adapter.Fill(table1); } catch { MessageBox.Show("error"); } } string selectCommand2 = …. string connectionString2 = …. using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand2, connectionString2)) { try { adapter.Fill(table2); } catch { MessageBox.Show("error"); } […]

我如何在Excel中expressionNaN值?

我正在写一个.NET程序,它生成一个在Excel中打开的XML文档。 单元格通常是这样的: <ss:Cell> <ss:Data ss:Type="Number">123</ss:Data> </ss:Cell> 但偶尔我写的值有NaN,DIV / 0或INF。 在这些情况下,123将被replace为该文本值,Excel将不会打开该文件,因为该文本。 我不认为Excel具有常量,所以我不确定如何处理这种简化,除了把“-1”值代入。 有什么build议么?

在VSTO中获取Excel工作簿的Hashcode以启用基于状态的button

我正在创build一个VSTOfunction区AddIn for Excel,并且在我的应用程序中存储了一些工作簿状态信息,用于更新可视化button。 考虑到可以有多个工作簿,我将这个状态对象存储在ThisAddIn类的字典中。 我的问题是,我不知道如何得到一个独特的哈希/键/ Guid的工作簿,因为我得到的是一个COM包装不断改变散列。 够公平的,我完全明白这一点。 我已经使用了很长时间的一个解决scheme是创build一个GUID并将其存储在工作簿的CustomDocumentProperties中,并将基于此的状态映射为键。 这至less工作,但它失败,如果我创build工作簿的副本,并在相同的应用程序实例中打开,并具有相同的GUID多个工作簿。 现在我只是有一个想法,我想我可以在Workbook_Open事件上刷新这个Guid。 但是,这仍然是一个狡猾的解决scheme。 我在这里find第二个解决scheme: http : //social.msdn.microsoft.com/Forums/en-US/vsto/thread/04efa74d-83bd-434d-ab07-36742fd8410e/ 所以我用这个家伙的代码并创build了这个: public static class WorkbookExtensions { public static IntPtr GetHashery(this msExcel.Workbook workbook) { IntPtr punk = IntPtr.Zero; try { punk = Marshal.GetIUnknownForObject(workbook); return punk; } finally { //Release to decrease ref count Marshal.Release(punk); } } } 它在几分钟内运行得非常好,直到它开始向我提供访问Application.ActiveWorkbook时出现的臭名昭着的错误“已经与其基础RCW分离的COM对象不能使用”。 这是引用工作簿COM对象的安全方法吗? 如果我有两个function区应用程序都使用此方法来获取单个工作簿GUID? 如果其中一个应用程序在我的状态对象上运行垃圾收集器,它会调用一个终结器来调用Marshal.FinalReleaseComObject(workbook)? […]

Accord.Net二项概率质量函数结果与Excel结果不同

我试图实现以前通过Excel工作表提供的一些function到C#应用程序,但Accord.NET的概率质量函数由于某种原因而不同于Excel函数。 在Excel概率质量函数中,就是这样使用的 =BINOM.DIST(250; 3779; 0.0638; FALSE) Result: 0.021944019794458 当我使用Accord.NET进行试用时 var binom = new BinomialDistribution(3779, 0.0638); binom.ProbabilityMassFunction(250); // Result: Infinity 但累积分布似乎正常工作(除了最后几位数字,但我认为这只是某种精度错误) Excel中: =BINOM.DIST(250; 3779; 0.0638; TRUE) Result: 0.736156366002849 Accord.NET: var binom = new BinomialDistribution(3779, 0.0638); binom.DistributionFunction(250); // Result: 0.736156366002318 为什么结果如此不同? 有没有办法让雅阁的Excel结果? 编辑: Extreme.Numerics计算与Excel相同的结果,但我不想使用这个库,因为这个库的许可证制度过去总是导致麻烦。 编辑2:似乎像某种溢出错误。 当我使用这个我得到正确的结果: Math.Exp(binom.LogProbabilityMassFunction(250)); 任何想法,为什么这可能会发生?

通过打开Excel窗口将C#中的数据写入Excel中断

当我的C#程序将数据连续写入Excel电子表格时,如果最终用户单击右上angular的菜单并打开“Excel选项”窗口,则会导致System.Runtime.InteropServices.COMException与HRESULT:0x800AC472中断数据写入到电子表格。 理想情况下,应允许用户在不引起exception的情况下执行此操作。 我发现这个错误代码的唯一解决scheme是循环,并等待,直到exception消失: 从HRESULTexception:0x800AC472有效挂起的应用程序,数据不写入Excel,用户在黑暗中留下的问题。 我想写关于Excel的主菜单,但没有find一个参考如何做到这一点。 我的应用程序支持Excel 2000至2013年。 这里是如何重现这个问题: 使用Visual Studio Express 2013 for Windows桌面,使用Excel 2007在Windows 7 64位上使用.NET 4.5.1。 创build一个新的Visual C#控制台应用程序项目。 添加对“Microsoft Excel 12.0对象库”(对于Excel)和对“System.Windows.Forms”(对于消息框)的引用。 这里是完整的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading.Tasks; using System.Threading; // for sleep using System.IO; using System.Runtime.InteropServices; using System.Reflection; using Microsoft.Win32; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication1 […]

C#读取XLS(XLSX)文件并填充数据网格的最佳方法

什么是最好的(免费或付费)使用C#读取Excel文件(XLS和XLSX),并填充一个数据网格,我还想在数据网格中所做的任何更改被写回到文件。 我还应该补充说,它需要高性能,因为数据网格可以包含大量的行(10,000+)。 这将用于商业应用,所以它需要分配。 这是一个Windows窗体应用程序。

用于电子表格操作的MS-Access / Excel的替代scheme

我有一个MS-Access应用程序,它格式化两个大电子表格(20,000+行)中的数据,将这些数据导入到表格中,运行一些比较数据的查询并将结果输出为excel文件。 问题是随着应用程序(和VBA代码)的增长,使用Access变得更加痛苦,我想知道是否有更好的方法? 与MS-Access相比,.NET(C#)解决scheme的优点/缺点是什么,以及最好的库有哪些用途? 干杯, Breandán 欢呼到目前为止的回应,我忘了提及,虽然这个应用程序需要独立,我需要能够打包应用程序,并发送给最终用户安装在他们的电脑上。 这只有(注意)MS-Office和.Net框架安装,所以我不知道如何可行的MySQL等没有在哪里举办。

Office 2007 PIA

我build立了一个应用程序,它使用COM Interop生成Excel。 它可以在我的用户机器上正常工作:Office 2007,Windows XP SP2。 现在我将其迁移到另一台机器,Office 2010,Windows 7 64位,并使用VS2008的Visual Studio 2010,仍然正常工作。 当我将它部署在我的用户机器上时,我遇到了问题,他们使用相同的Windows 7 64位,但Office 2007。 因此,如果我在Win7 64位和Office 2010计算机上安装Office 2007 PIA,请更改我的Visual Studio项目中的引用,是否可以解决问题?

.NET 4.0 Excel Interop与dynamic集合的问题

在Excel中,您可以使用XValues从一个系列对象中返回一个dynamic数组System.Object[*] 。 在.NET 3.5中,您可以通过将其转换为数组来访问此对象中的元素,即: var values = (Array)series.XValues; 在.NET 4.0中,这不再起作用,并且消息 “无法投射”System.Object [*]“types的对象来键入”System.Object []“” 给出。 有任何想法吗? 以下不起作用: 把它铸造成dynamic的。 将其转换为System.Object[*] 。 只需将对象放置在每个循环中。 尝试直接使用values[1]访问值,而不是当作为dynamic投射时。 然而,数组内的值在debugging器中显示。

库来编写一个Excel文件

我正在使用Microsoft Excel Interop库导出Excel文件。 但是,这个库的限制是: 要求用户的电脑必须有Microsoft Excel。 写入内容时,必须打开Microsoft Excel才能自动化。 要保存文件,用户必须手动完成:点击文件 – >保存。 我需要一个库: 用Excel格式将内容写入内存。 将此内容以编程方式保存到文件中。 注意:我使用.net 2.0和C#。 谢谢。