Powershell读取Excel单元格路径返回System.__ComObject的问题排查
问题原因及解决方法
问题根因
你当前的写法存在核心错误:
Select()是Excel COM对象的单元格选中操作方法,无论是否加括号调用,都不会返回单元格的存储内容,只会返回操作状态值或者COM对象元数据,因此你赋值后得到的是System.__ComObject类型,而非需要的路径文本。- 读取单元格内容需要访问单元格对象的对应属性,不能使用选中方法。
正确代码
# 方案1:读取单元格存储的原始值,优先推荐,兼容性最好 $RGPath = $Worksheet.Cells.Item(1).Value2 # 方案2:如果需要读取单元格格式化后显示的文本,可使用Text属性 $RGPath = $Worksheet.Cells.Item(1).Text
补充注意
操作Excel COM对象完成后,建议执行以下代码释放对象,避免Excel进程后台驻留占用资源:
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Worksheet) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Workbook) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null [GC]::Collect() [GC]::WaitForPendingFinalizers()
内容的提问来源于stack exchange,提问作者ASD
相关产品推荐
相关产品推荐

