Excel工作表修改当前表单C#

无论如何,你可以在Excel中修改已经打开的工作表。 他们的MSDN页面给你下面的内容。 这每次都会添加一个新的工作簿和工作表。 我有代码打开和现有的工作表,我只是想要它取代单元格中的值和closures。 任何帮助是极大的赞赏。

using Excel = Microsoft.Office.Interop.Excel; //Excel Reference public virtual Object ActiveSheet { get; set; } private void button15_Click(object sender, EventArgs e)//Generate Model and Part Numbers { Excel.Application oXL; Excel._Workbook oWB; Excel._Worksheet oSheet; //Start Excel and get Application object. oXL = new Excel.Application(); oXL.Visible = true; //Get a new workbook. oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); oSheet = (Excel._Worksheet)oWB.ActiveSheet; oSheet.Cells[6, 4] = "0"; //Change Value in Cell in Excel Cell Location [y-axis, x-axis] } 

您可以遍历oXL.Workbooks以访问当前打开的工作簿…当前活动的工作簿可通过oXl.ActiveWorkbook

编辑 – 根据评论:

使用oXL.Windows来查找已经打开的窗口,然后在访问ActiveWorkbook之前调用Activate ,或者只需调用oXL.ActiveWindow.Close()oXL.ActiveWindow.ActivatePrevious()来获得已经打开的窗口。

编辑2 – 根据评论解决scheme的最后一部分:

使用

 oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 

这是我想出来的,我希望这会帮助大家。 感谢所有帮助过的人

  using Excel = Microsoft.Office.Interop.Excel; //Excel Reference public virtual Object ActiveSheet { get; set; } private void button15_Click(object sender, EventArgs e)//Generate Model and Part Numbers { //Gets ActiveSheet to Modify Excel.Application oXL; Excel.Workbook oWB; Excel.Worksheet oSheet; //Start Excel and get Active Workbook and Sheet to modify oXL = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); oXL.Visible = true; oWB = (Excel.Workbook)oXL.ActiveWorkbook; oSheet = (Excel.Worksheet)oWB.ActiveSheet; //Cell Input oSheet.Cells[6, 4] = "0"; //Change Value in Cell in Excel Cell Location [y-axis, x-axis] } 

如果你打开如下,那么你将创build一个新的实例。 oXL = new Excel.Application();

C#将创build第二个Excel过程。 通过这种方式,您无法访问任何Excel应用程序,这是由用户手动打开的。

如果你想打开活动工作表,哪一个不是由你的应用程序打开,那么请点击这里: 使用C#处理Excel应用程序的实例

其余的都是一样的:

 oSheet = (Excel._Worksheet)oWB.ActiveSheet; 

如果你想访问工作表,你通过c#实例打开然后:( .net框架4)

 using Excel; Excel.Application oXl = new Excel.Application(); Workbook oWb = oxl.workbooks.add(); Worksheet oWs = oWs.Worksheets(1); //As default excel will open 3 worksheet and active worksheet will be first one. 

编辑:我没有检查代码块可以打字错误。

放弃Interop类并使用OLEDB在表单上运行更新查询可能会更简单。 如果你有兴趣,我可以提供例子。