如标题所示,假设我在一个解决方案中有两个项目。我有三个,最后一个只是一个例子。一个项目是ExcelWorkbook
,名为EWB
)
另一个名为WindowsForm
,名为Core
。我想从EWB
显示/打开/启动此Core
。我添加了对第一个的引用:
我可以看到该特定工作簿的表格。当你从另一个项目展示形式时,它就不那么容易了。仅供注意,EWB.Sheet1
不包含带0
个参数的构造函数,其构造函数有两个参数,......
以下是这些论点:
对于这个项目,它说如下:
我想在按钮点击事件上打开该工作簿,但我不知道如何:
知道如何做到这一点?任何帮助将不胜感激!
这是我如何从另一个项目打开表单,这是我想打开的方式 EWB
。
using WindowsFormsApplication1;
private void CoreBtn_Click(object sender, EventArgs e)
{
Form1 newForm = new Form1();
newForm.Show();
}
答案 0 :(得分:3)
添加对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对象模型看起来here。
答案 1 :(得分:1)
Excel项目与他们的VBA对应物非常相似:如果您的项目涉及只能在打开特定工作簿时访问的功能,那么您在VBA编辑器中将该VBA代码写在特定工作簿的“后面” - VSTO是一个“工作簿”项目,在Excel 2007+中它是一个支持宏的工作簿(.xlsm),在早期版本中它是一个运行代码(宏)的工作簿。
但是,如果您的项目涉及在应用程序(Excel)级别“运行”并且无论是否打开工作簿都可用的功能 - 更不用说是否打开了特定的工作簿,那么您正在编写Excel添加 - 在。 Excel启动时加载加载项并“监听”任何感觉,让您在打开的工作簿具有此类或此类文件名前缀时启用特定功能,或者当激活的工作表具有某些特定标签/名称时,显示表单(WinForms)或窗口(WPF),获取,插入,更新和删除数据库记录,与Web服务通信等等。
要从正在运行的加载项打开工作簿,将使用Excel对象模型(Application.Workbooks.Open()
)打开该文件,并且该问题的工作簿不需要包含在解决方案中。只有 工作簿需要运行宏时才需要工作簿项目(在这种情况下,您还有VBA选项),或者如果为了完整性,则将其包含为“模板”,版本化目的。
要解决这个问题,为了使用来自任何其他WinForms应用程序的特定工作簿启动Excel,只使用无参数构造函数和Show()
方法,您必须自己包装一些具有无参数构造函数的启动程序公开Show()
方法(然后http://office.microsoft.com/en-us/excel-help/command-line-switches-for-excel-HA010158030.aspx命令行Excel文档可能很方便 - 或引用Excel对象模型,如Porkbutts的回答所示)。可能还有其他方法,但我认为命令行启动是最简单的,如果通过VSTO不是您的独立WinForms应用程序中的选项。
答案 2 :(得分:0)
如何在ExcelWorkbook项目中创建一些程序集进程,并在Windows窗体Core中检查进程是否处于活动状态。
您可以使用System.Diagnostics.Process
检测正在运行的进程的开始和停止答案 3 :(得分:0)
首先这假设很多,因为我不知道你的项目范围,即代码(DLL,LIBS,EXE)
我假设ExcelWorkbook是一个Windows窗体项目。
构建ExcelWorkbook项目。您现在应该有一个Exectuable文件:ExcelWorkbook.exe。
在“核心”项目中右键单击“参考”并选择“添加”。
选择浏览按钮并找到ExcelWorkbook.exe的可执行文件,选择确定。
您现在应该看到对ExcelWorkbook项目的引用。
在您想要使用ExcelWorkbook项目的类/表格中,您将添加using语句
使用eBook = ExcelWorkbook //或您想要的任何可用名称
所以现在您可以引用ExcelWorkbook项目
public eBook.Form1 _excelWorkbookProject;
_excelWorkbookProject = new eBook.Form1()
如果它是一个表格然后显示它
_excelWorkbookProject.ShowDialog();
//如果您希望它保持在顶级窗口。
或
_excelWorkbookProject.Show();