Excel Interop“New Up”对象

时间:2013-06-25 15:35:17

标签: c# asp.net-mvc excel interop

我正在开发一个MVC应用程序,用户可以上传excel文档并输出HTML,但我对Interop库有一些困难,希望有人可以提供帮助。

为了保持这个非常简单,我已经达到了一个阶段,我想要实例化或“新建”工作表并使用所选工作表的id。用户已选择他们希望使用的工作表,但似乎没有任何方法可以执行此操作。

我尝试了workbookModel.workbook.Sheets.get_Item(1);这样的代码,它应该获取模型中的当前工作簿并获取id为1的工作表 - 我相信这是基于1的索引而不是基于0的索引。请记住,我在游戏中有一些viewModel因此在代码之上,但我在这里所做的只是Workbook work = new Workbook().Sheets.get_Item(1);

如果我错误地使用了工作表而不是工作表,我也尝试了Workbook work = new Workbook().Worksheets.get_Item(1);,但我不相信。

但我尝试过的任何东西似乎都无法运作。

如果有人能指出我正确的方向,我会非常感激,如果这没有意义,你需要更多信息,请告诉我。

非常感谢

1 个答案:

答案 0 :(得分:1)

首先,只有在运行excel应用程序时,Interop才有效。

所以,如果你没有运行它,你需要:

Application ExcelApp = new Application();

要从应用程序获取工作表,首先需要工作簿。 您可以使用以下方法之一获取工作簿:

//to get the first workbook of an application
Workbook MyBook = ExcelApp.Workbooks[1];

//to get a workbook by name
Workbook MyBook = ExcelApp.Workbooks["bookname"];

//to open a workbook from a xls file
Workbook MyBook = ExcelApp.Workbooks.Open(name and other parameters);

//to add a new workbook to the application
Workbook MyBook = ExcelApp.Workbooks.Add(optional template);

请注意,如果没有正在运行的应用程序,工作簿就不能存在,如果没有正在运行的应用程序中的父工作簿,则工作表也不能存在

要从工作簿中获取工作表,您需要进行转换,因为它来自as object

//to get an existing sheet
Worksheet MySheet = (Worksheet)MyBook.Worksheets["sheetname"];

//to create a new sheet
Worksheet MySheet = (Worksheet)MyBook.Worksheets.Add(some parameters);

但是,如果您可以设法从工作表中获取名称以使用链接填充视图,则可以存储这些工作表实例并将其传递给创建html的方法。 或者将它们存储在全局变量中。