Excel CSV 文件分隔符更改
Excel CSV files delimiter change
我在 Excel 目录中创建一个子文件夹,并在其中保存来自 Excel 工作簿
的多个 CSV 文件
我的问题是我需要在列表分隔符为“,”的系统上执行此操作。 CSV 文件是从默认列表分隔符为“;”的系统中读取的。我不能改变这个
因此我需要将 CSV 文件中的“,”更改为“;”。我的想法是使用 PowerShell 来实现。
我的第一次尝试是在 excel 中创建 CSV 文件后立即更改其分隔符,方法是将文件名传递给脚本。我设法更改了某个文件的分隔符,但我很难将路径名传递给脚本(没有错误,但文件也没有更改):
脚本代码:
param([string]$path)
$content = [IO.File]::ReadAllText($path) #readParameter
Import-CSV -Path $content -Delimiter ','|Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoTypeInformation #Export a CSV-File with ;
(Get-Content C:\Users\Desktop\temp.csv) | % {$_ -replace '"', ""} | out-file -FilePath C:\Users\Desktop\temp.csv -Force -Encoding ascii #remove " from file
Remove-Item -Path $content #remove old CSV-file
Rename-Item -Path C:\Users\Desktop\temp.csv -NewName $content #change file name
Excel 通话:
Call Shell("powershell.exe -ExecutionPolicy Unrestricted -File C:\Users\Desktop\delimiterChange.ps1 -path """ & location & """", 1)
谢谢
在控制面板 > 区域设置 > 其他设置
将列表分隔符设置为分号:
然后,在Excel另存为CSV
我会采取不同的方法。
在启用宏的 Excel 工作簿中:
1) 创建一个将导入分号分隔文件的例程。它应该将文件名作为参数,return 工作簿。
2) 创建一个将工作簿导出为 CSV 的例程。应该以工作簿为参数,以文件名为参数,export/close工作簿
3) 创建一个从目录中读取文件列表然后在每个文件上运行 1) 和 2) 的例程。
此外,如果您可以控制原始文件名,我不会将分号分隔的文件命名为 CSV。根据定义,CSV 表示逗号分隔值。给他们起别的名字。然后您的例程只需找到分号文件并且可以跳过 CSV,因为这些文件已经转换为逗号分隔。
如果你想使用 PS,这是简单快捷的方式。很有魅力。
$csv = Import-csv "C:\initial.csv"
$csv | Export-Csv "C:\converted.csv" -NoClobber -NoTypeInformation -Delimiter ";"
param([string]$path)
$content = [IO.File]::ReadAllText($path) #readParameter
Import-CSV -Path $content -Delimiter ','|Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoTypeInformation
您的代码读取 CSV 的 content(假设 CSV 的路径通过参数 -Path
传递)并尝试将其作为 路径到Import-Csv
。把上面的改成这样:
param([string]$path)
Import-CSV -Path $path |
Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoType
如果在表达式中 运行 Import-Csv
,您甚至可以替换文件的内容:
(Import-Csv -Path $path) |
Export-Csv -Path $path -Delimiter ';' -NoType
我建议保留双引号,但如果您必须删除它们,您可以在管道中这样做:
(Import-Csv -Path $path) |
ConvertTo-Csv -Delimiter ';' -NoType |
% { $_ -replace '"', '' } |
Set-Content -Path $path
我在 Excel 目录中创建一个子文件夹,并在其中保存来自 Excel 工作簿
的多个 CSV 文件我的问题是我需要在列表分隔符为“,”的系统上执行此操作。 CSV 文件是从默认列表分隔符为“;”的系统中读取的。我不能改变这个
因此我需要将 CSV 文件中的“,”更改为“;”。我的想法是使用 PowerShell 来实现。
我的第一次尝试是在 excel 中创建 CSV 文件后立即更改其分隔符,方法是将文件名传递给脚本。我设法更改了某个文件的分隔符,但我很难将路径名传递给脚本(没有错误,但文件也没有更改):
脚本代码:
param([string]$path)
$content = [IO.File]::ReadAllText($path) #readParameter
Import-CSV -Path $content -Delimiter ','|Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoTypeInformation #Export a CSV-File with ;
(Get-Content C:\Users\Desktop\temp.csv) | % {$_ -replace '"', ""} | out-file -FilePath C:\Users\Desktop\temp.csv -Force -Encoding ascii #remove " from file
Remove-Item -Path $content #remove old CSV-file
Rename-Item -Path C:\Users\Desktop\temp.csv -NewName $content #change file name
Excel 通话:
Call Shell("powershell.exe -ExecutionPolicy Unrestricted -File C:\Users\Desktop\delimiterChange.ps1 -path """ & location & """", 1)
谢谢
在控制面板 > 区域设置 > 其他设置
将列表分隔符设置为分号:
然后,在Excel另存为CSV
我会采取不同的方法。
在启用宏的 Excel 工作簿中:
1) 创建一个将导入分号分隔文件的例程。它应该将文件名作为参数,return 工作簿。
2) 创建一个将工作簿导出为 CSV 的例程。应该以工作簿为参数,以文件名为参数,export/close工作簿
3) 创建一个从目录中读取文件列表然后在每个文件上运行 1) 和 2) 的例程。
此外,如果您可以控制原始文件名,我不会将分号分隔的文件命名为 CSV。根据定义,CSV 表示逗号分隔值。给他们起别的名字。然后您的例程只需找到分号文件并且可以跳过 CSV,因为这些文件已经转换为逗号分隔。
如果你想使用 PS,这是简单快捷的方式。很有魅力。
$csv = Import-csv "C:\initial.csv"
$csv | Export-Csv "C:\converted.csv" -NoClobber -NoTypeInformation -Delimiter ";"
param([string]$path)
$content = [IO.File]::ReadAllText($path) #readParameter
Import-CSV -Path $content -Delimiter ','|Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoTypeInformation
您的代码读取 CSV 的 content(假设 CSV 的路径通过参数 -Path
传递)并尝试将其作为 路径到Import-Csv
。把上面的改成这样:
param([string]$path)
Import-CSV -Path $path |
Export-CSV -Path C:\Users\Desktop\temp.csv -Delimiter ';' -NoType
如果在表达式中 运行 Import-Csv
,您甚至可以替换文件的内容:
(Import-Csv -Path $path) |
Export-Csv -Path $path -Delimiter ';' -NoType
我建议保留双引号,但如果您必须删除它们,您可以在管道中这样做:
(Import-Csv -Path $path) |
ConvertTo-Csv -Delimiter ';' -NoType |
% { $_ -replace '"', '' } |
Set-Content -Path $path