C# Excel工作表修改当前工作表C
您是否可以在Excel中修改已打开的工作表。他们的MSDN页面提供了以下内容。每次都会添加一个新的工作簿和工作表。我有代码打开和现有工作表,我只希望它替换单元格中的值和关闭。非常感谢您的帮助C# Excel工作表修改当前工作表C,c#,winforms,excel,C#,Winforms,Excel,您是否可以在Excel中修改已打开的工作表。他们的MSDN页面提供了以下内容。每次都会添加一个新的工作簿和工作表。我有代码打开和现有工作表,我只希望它替换单元格中的值和关闭。非常感谢您的帮助 using Excel = Microsoft.Office.Interop.Excel; //Excel Reference public virtual Object ActiveSheet { get; set; } private void button15_Click(object sen
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.Workbook以访问当前打开的工作簿。。。当前活动工作簿可通过访问访问
编辑-根据评论:
在访问ActiveWorkbook之前,请使用oXL.Windows查找已打开的窗口并在该窗口上调用Activate,或者只需调用oXL.ActiveWindow.Close或oXL.ActiveWindow.ActivatePrevious即可获取已打开的窗口
编辑2-根据解决方案最后部分的意见:
使用
如果您像下面这样打开,那么您将只创建一个新实例。 oXL=新的Excel.应用程序 c将创建第二个excel进程。通过这种方式,您无法访问任何Excel应用程序,该应用程序由用户手动打开 如果要打开非应用程序打开的活动工作表,请检查此处: 其余的都一样:
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
若要访问通过c实例打开的工作表,请访问:.net framework 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.
编辑:我没有检查代码块是否有键入错误。放弃互操作类并使用OLEDB在工作表上运行更新查询可能更简单。如果您感兴趣,我可以提供示例。以下是我的想法,我希望这能帮助大家。谢谢所有帮助过我的人
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]
}
是的,我想我不明白没有对象ActiveWorkbook至少没有一个我可以找到的查看我更新的答案和链接-有oXl.ActiveWorkbook!什么是oXL=那么它不能是新的Excel.Application,它将打开另一个Excel窗口并出错。还有什么我可以让oXL等同于tooXL的吗?这是一个新的Excel应用程序-因为Excel不会第二次启动Singleton,一切都很好…结合起来-如果这不起作用,那么你的OS/Excel安装真的很奇怪。。。你是否有机会尝试通过Windows服务或第二次桌面会话来实现这一点?我打电话给微软,他们将为此向我收取500美元的费用,所以任何人都可以得到你的赞扬!!这也会打开一个新的应用程序,但不会修改现有打开的文件。谢谢您的帮助。由于堆栈溢出,我无法发布答案。我得到了答案。感谢您的帮助,由于堆栈溢出,我无法发布答案
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]
}