.NET Core 3.1 WPF中无法遍历Excel.Shapes的问题求助
问题分析与解决方案
核心原因
.NET Core 3.1中,WPF项目模板默认未引入包含System.Runtime.InteropServices.ComTypes.IEnumerator的依赖程序集,而WinForms模板自动包含了该类所需的COM互操作相关引用——这就是同样的代码在WPF中找不到对应类型、WinForms却能正常运行的根本原因。
解决方法
方法一:安装NuGet包补充依赖
在WPF项目中安装System.Runtime.InteropServices.ComTypes NuGet包,该包包含缺失的IEnumerator类型:
Install-Package System.Runtime.InteropServices.ComTypes
安装完成后重新编译运行,原有的foreach遍历逻辑即可正常工作。
方法二:改用索引遍历绕开枚举器问题
如果不想额外引入NuGet包,可以直接通过索引访问Shapes集合的元素,避免使用foreach依赖的枚举器(注意Excel集合的索引从1开始):
xl.Shapes allShapes = wSheet.Shapes; for (int i = 1; i <= allShapes.Count; i++) { xl.Shape shape = allShapes[i]; // 此处添加你的shape处理逻辑 }
内容的提问来源于stack exchange,提问作者Shiva_Adasule
相关产品推荐
相关产品推荐

