Excel Interop“新增”对象

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

为了保持这一点非常简单,我已经达到了要实例化或“新build”工作表的阶段,并使用所选表单的ID。 用户已经select了他们希望使用的工作表,但是似乎没有任何这样做的方法。

我尝试过的代码,如workbookModel.workbook.Sheets.get_Item(1); 这应该得到模型中的当前工作簿,并得到ID为1的工作表 – 我相信这是基于1的索引,而不是基于0。 请记住,我有一些viewModels在播放上述代码,但我真的在这里做的是Workbook work = new Workbook().Sheets.get_Item(1);

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

但我没有试过似乎工作。

如果任何人都可以指出我将正确的方向,将不胜感激,如果这没有意义,你需要更多的信息,请让我知道。

非常感谢

首先,Interop只有在运行excel应用程序的情况下才能正常工作。

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

 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); 

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