Powershell Excel ComObject打开自定义分隔符
我在Powershell Excel ComObject上遇到了一个问题,无法接受除逗号Powershell Excel ComObject打开自定义分隔符,excel,powershell,csv,delimiter,Excel,Powershell,Csv,Delimiter,我在Powershell Excel ComObject上遇到了一个问题,无法接受除逗号,以外的分隔符。接收到的一些外部.csv文件使用不同的分隔符,例如分号、管道|等 那么,有什么解决方案可以让它接受自定义分隔符吗?我尝试使用Import Csv$fileloop-Delimiter';'并且它可以工作。但是,我希望继续使用-ComObject,因为我的脚本都是使用ComObject编写的,我需要它来解析和检查列和行以及一些额外的函数 以下是打开.csv文件以进行进一步处理的相关代码片段: $
,
以外的分隔符。接收到的一些外部.csv文件使用不同的分隔符,例如分号代码>、管道|
等
那么,有什么解决方案可以让它接受自定义分隔符吗?我尝试使用Import Csv$fileloop-Delimiter';'代码>并且它可以工作。但是,我希望继续使用-ComObject,因为我的脚本都是使用ComObject编写的,我需要它来解析和检查列和行以及一些额外的函数
以下是打开.csv文件以进行进一步处理的相关代码片段:
$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';'之类的方法导出Csv$commadelimiteroutput-Delimiter','
以将新的.Csv文件重建为逗号分隔符,然后使用ComObject进行处理
如果缺少信息或不清楚,请告诉我。不要使用该方法,请使用。这允许设置自定义分隔符,但这不是必需的,因为它还允许一些标准分隔符使用$true
/$false
设置分号的参数
分隔符到$true
,其他分隔符到$false
$objexcel.WorkBooks.OpenText(`
$path, # Filename
2, # Origin
1, # StartRow
1, # DataType
1, # TextQualifier
$false, # ConsecutiveDelimiter
$false, # Tab
$true, # Semicolon
$false, # Comma
$false, # Space
$false, # Other - $true/$false
$false, # OtherChar - specify the character if Other is $true
@(@(3,3),@(1,2)) # FieldInfo
)
对于FieldInfo
,您可以获取枚举。我使用了与文档示例相同的示例,将第3列指定为,xlMDYFormat
第1列指定为xlTextFormat
,但在PowerShell中。Excel当前正在打开第一列中包含所有数据的文件吗?如果是这样,您可以使用它的方法来定义自定义分隔符。以前尝试过此解决方案,也尝试过用您的代码替换当前正在工作的打开方法。不幸的是,代码将因异常而停止:(System.Management.Automation.RuntimeException)-错误消息:不能对空值表达式调用方法。你知道这个例外吗?我对opentext做了一些研究,opentext可能无法直接在.csv文件扩展名上工作,fyr: