【发布时间】:2018-04-30 22:59:21
【问题描述】:
我在 Powershell Excel ComObject 上遇到问题,我无法接受逗号 , 以外的分隔符。收到的一些外部 .csv 文件使用不同的分隔符,例如分号;、管道| 等。
那么,有什么解决方案可以让它接受自定义分隔符吗?我尝试使用 Import-Csv $fileloop -Delimiter ';' 并且它有效。但是我希望继续使用 -ComObject 来继续,因为我的脚本都是使用 ComObject 编写的,我需要它来解析和检查列和行以及一些额外的功能。
下面是打开.csv文件进行进一步处理的相关代码sn-p:
$path = "C:\Users\1.csv"
$objexcel = New-Object -ComObject Excel.Application
$workbook = $objexcel.Workbook.Open($path)
$worksheet = $workbook.activesheet
$colMax = ($WorkSheet.UsedRange.Columns).count
$intcolMax = $colMax
$intRowMax = ($WorkSheet.UsedRange.Rows).count
.....
我对一些相关主题进行了研究并进行了测试,但都没有奏效:
测试结果:
1. 脚本需要高可移植性,这意味着脚本会传递给其他用户使用,因此需要避免在windows上使用区域和语言设置的设置方法。
2. 脚本需要处理大尺寸和大量的.csv文件,因此需要避免使用Import-Csv $fileloop -Delimiter ';'| Export-Csv $commadelimiteroutput -Delimiter ','等方法将新的.csv文件重建成逗号分隔符,然后使用ComObject处理。
如果缺少信息或不清楚,请告诉我。
【问题讨论】:
-
Excel 当前是否打开第一列中包含所有数据的文件?如果是这样,您可以使用它的text to columns 方法来定义自定义分隔符。
标签: excel powershell csv delimiter