gpt4 book ai didi

excel - Powershell Excel ComObject 打开自定义分隔符

转载 作者:行者123 更新时间:2023-12-02 21:20:54 27 4
gpt4 key购买 nike

我在 Powershell Excel ComObject 上遇到问题,无法接受逗号 , 以外的分隔符。收到的一些外部 .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. PowerShell Workbooks.Open with delimiter semicolon
  2. https://kb.paessler.com/en/topic/2293-i-have-trouble-opening-csv-files-with-microsoft-excel-is-there-a-quick-way-to-fix-this

测试结果:
1.脚本需要高可移植性,这意味着脚本会传递给其他用户使用,因此需要避免在Windows上使用区域和语言设置方法。
2. 脚本需要处理大尺寸、大量的.csv文件,因此需要避免使用诸如 Import-Csv $fileloop -Delimiter ';'| 之类的方法Export-Csv $commadelimiteroutput -Delimiter ',' 将新的 .csv 文件重建为逗号分隔符,然后使用 ComObject 进行处理。

如果缺少信息或不清楚,请告诉我。

最佳答案

而不是使用 Open方法,使用OpenText 。这允许设置自定义分隔符,但这不是必需的,因为它还允许使用 $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,您可以获得枚举here 。我使用了与文档示例相同的示例,将第 3 列指定为 xlMDYFormat 第 1 列指定为 xlTextFormat,但在 PowerShell 中。

关于excel - Powershell Excel ComObject 打开自定义分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com