没有安装Excel的CSV到多页XLS。的powershell

时间:2015-06-30 23:42:56

标签: excel powershell csv xls xlsx

我有一个包含多个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这样的东西并学习脚本。

3 个答案:

答案 0 :(得分:2)

如果您使用openxml格式* .xlsx,则无需安装办公室即可操作Excel文档。

您可以使用一些PowerShell模块(powertools,epplus等)来完成您想要做的事情。 以下是使用powershell wrapper that I wrote for Spreadsheetlight

的解决方案

创建一些csv文件

Get-Service | Export-Csv -Path c:\temp\Services.csv -NoTypeInformation
Get-Process | Export-Csv -Path c:\temp\Processes.csv -NoTypeInformation

创建一个新的Excel文档来保存csv数据

$doc = New-SLDocument -WorkbookName bigxldoc -Path C:\temp -PassThru -Verbose

将csv文件导入excel

Get-ChildItem -Path C:\temp -Filter *.csv | 
  Import-CSVToSLDocument -WorkBookInstance $doc  -AutofitColumns -Verbose 

保存文档

$doc | Save-SLDocument -Verbose

注意:这仅适用于*.xlsx格式,而不适用于*.xls

EDIT-1

默认情况下,数据导入从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