【发布时间】:2016-11-08 00:06:30
【问题描述】:
我有以下 Powershell 脚本,它非常适合将 excel 文件转换为 csv。我遇到了最后一个问题,当在特殊字符上运行时,这些字符正在丢失或替换。为了解决这个问题,我想在保存到 csv 时保存使用 UTF-8 编码的文件。
阅读Microsoft documentation 后,我相信我需要更改 .SaveAs 子句中的一个参数来对文件进行编码,但是我找不到这个工作的示例。
为了让 csv 文件以所需的编码保存,要添加的正确参数是什么?
$InputDirectory = 'Files are here'
$OutputDirectory = 'Files go here'
#Function to change excel files to csv
Function ExcelCSV ($File)
{
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Excel.DisplayAlerts = $false
$wb = $Excel.Workbooks.Open($File.FullName)
foreach ($ws in $wb.Worksheets)
{
$ws.SaveAs(("{0}{1}" -f $OuputDirectory,$Files.Name -replace ‘.xlsx$’,"") + ".csv", 6)
}
$wb = $Excel.Workbooks.Close()
$Excel.Quit()
}
#Looping through files, checking their extensions, converting excel to csv.
foreach ($Files in (Get-ChildItem -Path $InputDirectory))
{
$extn = [IO.Path]::GetExtension($Files)
if ($extn -eq ".xlsx")
{
ExcelCSV($Files)
}
Elseif ($extn -eq ".xls")
{
ExcelCSV($Files)
}
Else
{
Copy-Item ("{0}{1}" -f $InputDirectory,$Files.Name) ("{0}{1}" -f $OuputDirectory,$Files.Name)
}
}
【问题讨论】:
标签: excel csv powershell utf-8