我有一个包含多个CSV文件的文件夹。我想把它们全部带到XLS(或xlsx),其中一张表示每个CSV文件。
这里的关键区别是Excel未安装且无法安装。
我知道我可以使用EPPlus库 - http://epplus.codeplex.com/。 我还读过使用Access数据库引擎 - http://www.microsoft.com/en-us/download/details.aspx?id=13255。
我已经浏览了许多不同的脚本,以传统的方式将CSV转换为XLS,并尝试将它们转换为使用其中一种,但似乎并没有走得太远。如果没有Excel,这甚至可能吗?
如果它是一个可行的选择,我会愿意安装像LibreOffice这样的东西并学习脚本。
答案 0 :(得分:2)
如果您使用openxml格式* .xlsx,则无需安装办公室即可操作Excel文档。
您可以使用一些PowerShell模块(powertools,epplus等)来完成您想要做的事情。 以下是使用powershell wrapper that I wrote for Spreadsheetlight:
的解决方案Get-Service | Export-Csv -Path c:\temp\Services.csv -NoTypeInformation
Get-Process | Export-Csv -Path c:\temp\Processes.csv -NoTypeInformation
$doc = New-SLDocument -WorkbookName bigxldoc -Path C:\temp -PassThru -Verbose
Get-ChildItem -Path C:\temp -Filter *.csv |
Import-CSVToSLDocument -WorkBookInstance $doc -AutofitColumns -Verbose
$doc | Save-SLDocument -Verbose
注意:这仅适用于*.xlsx
格式,而不适用于*.xls
默认情况下,数据导入从Row2,Column2开始,可以轻松更改:
Get-ChildItem -Path C:\temp -Filter *.csv |
Import-CSVToSLDocument -WorkBookInstance $doc -ImportStartCell A1 -AutofitColumns -Verbose
'Sheet1'
和保存文档$doc | Remove-SLWorkSheet -WorkSheetName sheet1 -Verbose
$doc | Save-SLDocument -Verbose
答案 1 :(得分:2)
您可能还会发现https://github.com/dfinke/ImportExcel有用。
从示例中,
gsv | Export-Excel .\test.xlsx -WorkSheetname Services
dir -file | Export-Excel .\test.xlsx -WorkSheetname Files
答案 2 :(得分:0)
我的最终剧本
# **install-module slpslib**
$outputfilename = $(get-date -f yyyyMMdd) + "_" + "_combined-data.xlsx" #creates file name with date/username
$doc = New-SLDocument -WorkbookName $outputfilename -Path D:\Reports -PassThru -Verbose
Get-ChildItem -Path D:\Reports -Filter *.csv |
Import-CSVToSLDocument -WorkBookInstance $doc -AutofitColumns -Verbose
$doc | Remove-SLWorkSheet -WorkSheetName sheet1 -Verbose
$doc | Save-SLDocument -Verbose