使用Powershell从xls创建CSV

时间:2019-01-31 13:09:29

标签: powershell

我想创建Powershell脚本,该脚本从.xls文件创建csv文件,但我不知道如何使用Powershell Wihout VBA。

到目前为止,我有这个:

ConvertTo-Csv "C:\Users\Me\TestsShella\test.xlsx"  | Out-File Q:\test\testShella.csv

但是它不起作用。

3 个答案:

答案 0 :(得分:0)

有一个预构建的库:

https://www.powershellgallery.com/packages/ImportExcel/5.4.4

然后您将可以使用import-excel函数/ cmdlet,并且能够导入,转换为csv然后导出

答案 1 :(得分:0)

也许这可行:

    rename-item -Path "C:\Users\Me\TestsShella\test.xlsx" -NewName "item.csv"

打开csv时,您会收到一条消息,但是csv的格式类似于xlsx。

答案 2 :(得分:0)

在运行的计算机上存在Excel时,将其用作COM对象:

## Q:\Test\2019\01\31\SO_54461362.ps1

$InFile = Get-Item "$($Env:USERPROFILE)\TestsShella\test.xlsx"
$OutFile= $InFile.FullName.replace($InFile.Extension,".csv")

$Excel = new-object -ComObject "Excel.Application"
$Excel.DisplayAlerts = $True
$Excel.Visible = $False # $True while testing

$WorkBook = $Excel.Workbooks.Open($InFile.FullName)
$WorkBook.SaveAs($OutFile, 6) # 6 -> type csv
$WorkBook.Close($True)

$Excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)

根据语言环境(小数点/逗号),csv文件将以逗号或分号分隔。


没有安装Excel,请使用已经建议的模块ImportExcel

$InFile = Get-Item "$($Env:USERPROFILE)\TestsShella\test.xlsx"
$OutFile= $InFile.FullName.replace($InFile.Extension,".csv")

Import-Excel $Infile.FullName | Export-Csv $OutFile -NoTypeInformation

这将产生一个.csv文件,其中 all 字段用双引号引起来并用逗号分隔。