создать CSV из XLS с помощью powershell - PullRequest
0 голосов
/ 31 января 2019

Я хочу создать скрипт powershell, который создаст мне CSV-файл из файла .xls, но я не знаю точно, как использовать powershell без vba.

Пока у меня есть это:

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

Но это не работает.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

возможно это может сработать:

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

вы получите сообщение при открытии CSV, но формат CSV похож на xlsx.

0 голосов
/ 31 января 2019

При наличии 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 с всеми полями, заключенными в двойные кавычки и разделенными запятыми.

0 голосов
/ 31 января 2019

Для этого есть встроенная библиотека:

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

После этого у вас будет доступная функция / командлет import-excel и вы сможете импортировать, конвертировать в csvа затем экспортировать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...