Tag: winforms

c#使用excel打开xml文件

我如何打开一个XML文件使用Excel与C#的WinForms? 我将数据保存到XML文件,我需要用户能够在应用程序更新xml文件后立即看到文件。 我需要用excel打开文件

两个程序试图读取一个成功的人失败,相同的代码

我有两个彼此不相关的程序,但他们有一个相同的方法,他们尝试从Excel文件中读取行。 计划1 public DataTable GetExcelInfo(string filepath) { DataTable datatab = new DataTable(); try { string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\"; using (OleDbConnection conn = new OleDbConnection(connectionString)) { conn.Open(); OleDbCommand cmd = new OleDbCommand("SELECT Format([F1], \"#\"), Format([F2], \"#\"), Format([F3], \"#\") FROM [Sheet1$]", conn); OleDbDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string[] values […]

如何修复由于NativeWindow在Excel VSTO项目中的ThreadAbortException?

在一个针对Office 2007和2010的VSTO项目中,我在ThisAddIn_Shutdown完成后得到一个ThreadAbortException。 我相信这是由我的NativeWindow实现引起的,我在关机中清理它。 我正在使用NativeWindow,以便我的VSTO插件可以有HotKeys,我可以检测哪些键被按下。 这里有一个类似的问题,但我没有使用它的forms,所以我不能使用这个解决scheme。 在这个线程中,问题得到了更好的解释。 您必须在closures之前在主Excel窗口中释放您的子类。 原因是加载程序调用closures响应主Excel窗口closures。 因此,如果您在Excel的主窗口closures之前还没有调用ReleaseHandle,WM_CLOSE将首先被调度到NativeWindow的托pipeWndProc。 这将托pipe代码放在加载器closures代码下面的堆栈中。 所以加载器调用closures并卸载AppDomain,但是堆栈继续放松,并遇到托pipe代码。 由于AppDomain已被卸载,因此抛出了AppDomainUnloadedException,但由于没有可用的处理程序,因此Excel崩溃。 但是我再次不能使用这个解决scheme,因为我没有使用这个解决scheme。 所以据我可以告诉解决办法是在Excelclosures之前清理NativeWindow的东西。 我怎样才能做到这一点? 我发现/想到的唯一的事情就是解决这个Word问题。 这是发送WM_CLOSE消息。 我可以取消一个应用程序退出清理我的本地窗口,并亲自closuresExcel。 但是我不确定Excel(2007/2010)是否知道什么时候closures,这足以取消。

是否有可能从Excel电子表格(VBA)打WinForms“button”?

交易者很懒,他们不想把应用程序切换到命中button。 当他们点击Excel中的button时,它应该与我的WinForms应用程序中的另一个button(popup一个对话框)相同。 可行?

Visual Studio引用

我正在使用C#Winforms,并且当我添加对Microsoft.Interop.Office.Excel v12.0.0.0项目的引用时,它会自动将COM引用添加到C:\Program Files\Microsoft Office\Office14\EXCEL.exe 。 这个.exe在任何其他机器上都找不到,因此在其他设备上不起作用。 有没有办法导入该文件,或使其不参考该文件?

将数据表保存到vb.net winform应用程序的excel表中

一年前,我看到一个漂亮的简单代码,它获取一个数据表并将其保存在一个excel文件中。 诀窍是使用networking库(与http的东西),我几乎可以肯定,这是一个stream。 我发现有很多代码有响应,但我不能让它在一个双赢的环境中工作。 还有一个单元格的细胞代码 – 不感兴趣 – 慢。 我想粘贴它作为一个范围或closures。 谢谢

.NET Office互操作使用版本独立的办公室

我开发了一个将数据导入Microsoft Excel的应用程序。 我的机器上安装了VS2005 + .NET 2.0和Microsoft Office 2007(Office 12)。 编译的应用程序工作正常,如果我在我的机器上运行它,但是当我将应用程序部署到其他机器说那些使用较低版本(Office 2000),我收到错误: 无法加载文件或程序集Microsoft.Office.Interop.Excel,版本12.0.0.0 那么我将如何使我的应用程序正确执行而不pipe机器上安装的Office(Excel)如何? 谢谢。 一些更新:我放置了我的bin文件夹中引用的两个DLL,即Microsoft.Office.Interop.Excel.dll(版本12.0.0.0)和Office.dll(版本12.0.0.0)。 我已经将此引用的属性设置为Copy Local = True,并且当我编译我的应用程序时,这些DLL被复制到debug / release文件夹中。 现在,当我尝试运行应用程序时,我已经摆脱了错误:“无法加载文件或程序集Microsoft.Office.Interop.Excel,版本12.0.0.0” 但另一个错误出现了:System.AccessViolationException:试图读取或写入受保护的内存。 这通常表示其他内存已损坏。 Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename,Object FileFormat,Object Password,Object WriteResPassword,Object ReadOnlyRecommended,Object CreateBackup,XlSaveAsAccessMode AccessMode,Object ConflictResolution,Object AddToMru,Object TextCodepage,Object TextVisualLayout,Object Local) 那么,如何创build一个应用程序,无论安装的Office版本如何,都可以将数据表格数据导出到Excel中? 谢谢。

20分钟Excelmacros从C#Winform运行

我们有一个macros需要大约20分钟才能完成。 我们已经获得了我们的用户可以访问的ac#winform – 它包含一个“运行macros”button。 我喜欢它,以便用户可以按下button,然后实际closures窗体,然后在20分钟内在预定义的目录中查看macros的输出。 这只是一个创build一个委托,让委托运行macros或上述不是一件小事的情况? 几个想法可能是可行的: 用户按下button后隐藏表单? 缺点是macros将仍然在Excel的实例内绑定用户的CPU? UserX的电脑上的winForm可以启动一个程序在我们的“Excel”服务器上运行吗? 这听起来很遥远,但也许有人可以帮助。 类似于上面可能在Excel服务器上,我可以创build一个小的守护进程控制台应用程序,计划每2秒运行一次,并检查共享数据库上的表,看看是否有任何macros需要运行。 用户的winform可以更新这个控制表,然后守护进程开始工作。

以编程方式更改excel行或列的高度

可能很容易。 我怎样才能改变行或列高? xlApp = new Excel.Application(); xlApp.Visible = true; xlApp.DisplayAlerts = false; Excel.Workbooks xlWorkBooks = xlApp.Workbooks; xlWorkBook = xlWorkBooks.Open(directoryPath + "\\" + fileName, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); xlWorkSheets = xlWorkBook.Worksheets; //Get all the sheets in the workbook xlWorkSheet = (Excel.Worksheet)xlWorkSheets.get_Item("Sheet1"); //Get the allready exists sheet […]

将新列添加到GridView DevExpress

我从Excel导入工作表。 我需要在网格的最后添加一个新的单元格,其中包含有关空单元格的消息,并将其保存在一个名为msg的数组中; private void simpleButton1_Click(object sender, System.EventArgs e) { try { OleDbConnection con = new OleDbConnection(); con.ConnectionString = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=C:\\Users\\pc\\Documents\\Emp.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes\""; con.Open(); DataTable dtSchema; dtSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); OleDbCommand Command = new OleDbCommand ("select * FROM [" + dtSchema.Rows[0]["TABLE_NAME"].ToString() + "]", con); OleDbDataAdapter da = new OleDbDataAdapter(Command); […]