Excel互操作;New Up”;对象
本文关键字:对象 Up New 互操作 Excel | 更新日期: 2023-09-27 18:20:01
我正在开发一个MVC应用程序,用户可以在该应用程序中上传excel文档并输出HTML,但我在Interop库方面遇到了一些困难,我希望有人能提供帮助。
为了简单起见,我已经到了要实例化或"新建"工作表并使用所选工作表的id的阶段。用户已经选择了他们想要使用的工作表,但似乎没有任何方法。
我尝试过像workbookModel.workbook.Sheets.get_Item(1);
这样的代码,它应该获得模型中的当前工作簿,并获得id为1的工作表——我相信这是基于1的索引,而不是基于0的索引。请记住,我有一些视图模型在发挥作用,因此上面的代码,但我在这里真正做的是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);
但是,如果您能够设法从图纸中获取名称以使用链接填充视图,则可以存储这些图纸实例,并将它们传递给创建html的方法。或者将它们存储在全局变量中。