C# - Microsoft.Office.Interop.Excel.Sheets 到 Microsoft.Office.Interop.Excel.Worksheet[]

问题描述 投票:0回答:2

我正在尝试创建 Excel 文件的

Worksheet
数组,但我找不到正确的转换。

这是代码:

Excel.Application app = new Excel.Application();
Excel.Workbook book = app.Workbooks.Open(pathFile);
int numSheet = book.Worksheets.Count;
Excel.Worksheet[] sheets = new Excel.Worksheet[numSheet];
sheets = (Excel.Worksheet[])book.Worksheets;

我尝试使用该转换,正如您从代码中看到的那样,但它是多余的。 我该如何解决这个问题?

c# excel excel-interop
2个回答
5
投票

Excel.Sheets 是一个 IEnumerable,可以包含图表和工作表,因此如果您使用循环,您可以获得所需的结果。

Excel.Application app = new Excel.Application();
Excel.Workbook book = app.Workbooks.Open(pathFile);
int numSheet = book.Worksheets.Count;
List<Excel.Worksheet> sheets = new List<Excel.Worksheet>(); 
foreach(Excel.Worksheet sheet in book.Worksheets)
    sheets.Add(sheet);

如果你需要它在数组中之后你可以随时调用

sheets.ToArray();

0
投票

晚了几年,但是对于其他人来说,使用 linq 方法 OfType:

var sheets = book.Worksheets.OfType<Excel.Worksheet>().ToList();

这样图表就不会造成问题。如果保证 Excel 可枚举属性返回单一类型,则使用 Cast<> 代替。

© www.soinside.com 2019 - 2024. All rights reserved.