PowerShell使用ImportExcel模块:如何获取行的列数?
解决ImportExcel模块获取Excel第一行列数问题
方法1:通过导入的数据集对象属性计数
使用Import-Excel导入工作表后,返回的是对象数组,取第一个有效数据行的psobject.Properties数量,就是第一行的列数:
$excelData = Import-Excel -Path "你的文件路径.xlsx" -WorksheetName "Sheet1" # 直接取第一行的属性数量 $columnCount = $excelData[0].psobject.Properties.Count
如果存在第一行是空行的情况,可先筛选出首个非空行再计数:
$firstValidRow = $excelData | Where-Object { $_.psobject.Properties.Value | Where-Object { $_ -ne $null } } | Select-Object -First 1 $columnCount = $firstValidRow.psobject.Properties.Count
方法2:通过工作簿维度获取实际使用列数
若用Open-ExcelPackage直接操作工作簿,可通过工作表的Dimension属性获取实际使用区域的列数,对应第一行的结束列数量:
$excelPackage = Open-ExcelPackage -Path "你的文件路径.xlsx" $sheet1 = $excelPackage.Workbook.Worksheets["Sheet1"] # 获取实际使用区域的总列数 $columnCount = $sheet1.Dimension.Columns
你的原有代码问题说明
$sheet1.Row(1).Count:Row(1)返回单行对象,直接Count只会得到1,并非列数- 嵌套多层
.Count的写法逻辑错误,会导致计数结果异常 $sheet1.UsedRange.Rows(1).Columns.Count:ImportExcel模块的工作表对象没有UsedRange属性,需替换为Dimension
内容的提问来源于stack exchange,提问作者Penx
相关产品推荐
相关产品推荐

