1

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

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

我已经尝试过代码,例如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);过以防我错误地使用工作表而不是工作表,但我不这么认为。

但是我尝试过的任何方法似乎都不起作用。

如果有人能指出我正确的方向,那将不胜感激,如果这没有意义并且您需要更多信息,请告诉我。

非常感谢

4

1 回答 1

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

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

于 2013-06-25T17:51:46.233 回答