如何从WindowsForm项目显示/打开/启动ExcelWorkbook项目(Sheet1)?

如标题所示,让我们说,我有一个解决scheme中的两个项目。 我有三个,最后一个只是一个例子。 一个项目叫做ExcelWorkbookEWB

在这里输入图像描述

另一个是WindowsFormCore )。 我想从Core显示/打开/启动这个EWB 。 我已经添加了第一个引用:

在这里输入图像描述

我可以看到特定工作簿的表格。 这不像从另一个项目展示forms那样简单。 只是为了说明, EWB.Sheet1不包含一个构造函数接受0参数,它的构造函数有两个参数,…

以下是这些论点:

  • Microsoft.Office.Tools.Excel.Factory工厂
  • IServiceProvider serviceProvider

对于这个项目,其说明如下:

在这里输入图像说明

我想打开button点击事件的工作簿,但我不知道如何:

  • 启动它
  • 展示下
  • 打开它
  • 要么 …

任何想法如何做到这一点? 任何帮助将不胜感激!

这是我如何从另一个项目打开表单, 这是我想打开 EWB

 using WindowsFormsApplication1; private void CoreBtn_Click(object sender, EventArgs e) { Form1 newForm = new Form1(); newForm.Show(); } 

添加对Microsoft.Office.Interop.Excel的引用并using Excel = Microsoft.Office.Interop.Excel;

下面是一些简单的代码,让你开始:

 Excel.Application xlApp = new Excel.Application(); // create new Excel application xlApp.Visible = true; // application becomes visible xlApp.Workbooks.Open(@"C:\workbook.xlsx"); // open the workbook from file path xlApp.Quit(); // close the application when you are done 

有关更多信息, Excel对象模型看这里 。

Excel项目与他们的VBA相似:如果你的项目涉及的function只能在特定的工作簿被打开时才能被访问,那么你就是在VBA编辑器的VSTO中编写特定工作簿的VBA代码。 “工作簿”项目,在Excel 2007+中,它是一个支持macros的工作簿(.xlsm),在早期版本中,它是运行代码(macros)的工作簿。

但是,如果您的项目涉及在应用程序(Excel)级别“运行”的function,并且无论是否打开工作簿,都可以使用 – 更不用说是否打开特定的工作簿,您正在编写Excel加载项。 当Excel启动时,加载项加载并“听”任何感觉,当您打开的工作簿具有这样或那样的文件名前缀时,或者当激活的工作表具有特定的标签/名称时,可以启用特定的function,显示窗体(WinForms)或窗口(WPF),获取,插入,更新和删除数据库logging,与Web服务交谈,无论如何。

要从正在运行的加载项打开工作簿,使用Excel对象模型( Application.Workbooks.Open() )打开该文件,并且该工作簿不需要包含在解决scheme中。 只有在工作簿需要运行macros(在这种情况下,您也有VBA选项)时,您才需要工作簿项目,或者如果出于完成目的,您将其作为“模板”包含在版本控制中。

为了从任何其他的WinForms应用程序中仅仅使用一个无参数的构造函数和一个Show()方法来启动Excel,为了启动Excel,你必须包装一些具有无参数构造函数的启动器,并且公开Show()方法(然后http://office.microsoft.com/en-us/excel-help/command-line-switches-for-excel-HA010158030.aspx命令行Excel文档可能会得心应用 – 或者将Excel对象模型引用为由Porkbutts的答案显示)。 可能还有其他方法,但是我认为命令行启动是最简单的,如果通过VSTO不是您独立的WinForms应用程序中的一个选项。

如何在ExcelWorkbook项目中创build一些assembly过程,并检查该过程是否在Windows窗体Core中处于活动状态。

您可以使用System.Diagnostics.Process检测正在运行的进程的启动和停止

首先这个假设很多,因为我不知道你的项目的范围,即代码(DLL,LIBS,EXE)

我假设ExcelWorkbook是一个Windows窗体项目。

构buildExcelWorkbook项目。 你现在应该有一个Exectuable文件:ExcelWorkbook.exe。

在“核心”项目中,右键单击引用,然后select添加。

select浏览button并findExcelWorkbook.exe的可执行文件select确定。

您现在应该看到对ExcelWorkbook项目的引用。

在类/表单中,您想要使用ExcelWorkbook项目,您将添加使用语句

使用eBook = ExcelWorkbook //或者你想要的任何可以使用的名字

所以现在你可以引用ExcelWorkbook项目

 public eBook.Form1 _excelWorkbookProject; _excelWorkbookProject = new eBook.Form1() 

如果它是一个窗体然后显示它_excelWorkbookProject.ShowDialog(); //如果你想让它保持在顶层窗口

要么

 _excelWorkbookProject.Show();