【发布时间】:2016-09-26 10:45:45
【问题描述】:
我的最终目标是使用 PowerShell 将某些 CSV 文件中的数据转换/导出到具有多个工作表的 Excel 工作簿中。我有大约 90% 的工作,但我似乎无法删除 CSV 文件内容中的一些逗号。
我尝试了一些正则表达式,但它们不起作用。
到目前为止,我的运气是它要么不删除任何内容,要么删除 CSV 中的每个逗号,然后通过将所有内容放入单个列来中断导出到 Excel,或者删除单元格中包含逗号的所有内容。
这是我尝试使用的 CSV 的一些内容的示例。
Software Name Vendor
Software A Vendor A
Software B Vendor B
Software C Vendor, C
Software D Vendor D
Software E Vendor, E
这是我正在整理的脚本中的一个 sn-p 代码。
$Excel = new-object -comobject Excel.Application
$Excel.SheetsInNewWorkbook = $GetCSV.Count
$AddWorkBook = $Excel.Workbooks.Add()
$NewWorkSheet=1
foreach ($CSV in $GetCSV) {
(Get-Content $CSV | Select-Object -Skip 1) | Set-Content $CSV
$Row=1
$Column=1
$WorkSheet = $AddWorkBook.WorkSheets.Item($NewWorkSheet)
$Name = $CSV.Name -replace ('.CSV','')
$WorkSheet.Name = $Name
$GetFile = (Get-Content $CSV)
foreach($Line in $GetFile) {
$LineContens=$Line -split ‘,(?!\s*\w+”)’
foreach($Cell in $LineContens) {
$WorkSheet.Cells.Item($Row,$Column) = $Cell
$Column++
}
$Column=1
$Row++
}
$NewWorkSheet++
}
$AddWorkBook.SaveAs($WorkBookName)
【问题讨论】:
-
这不是很清楚。对于 CSV 解析,您不使用 Import-Csv 是否有原因? (technet.microsoft.com/en-us/library/ee176874.aspx)。您尝试在脚本中的哪个位置删除逗号,或者是因为您尝试手动解析 CSV?如果您使用 Import-CSV 并遍历该对象,是否可以解决您的问题?
-
请学会缩进你的代码。它将使其更具可读性。
标签: regex excel csv powershell