CSVs到没有安装Excel的多页XLS。 Powershell

问题描述 投票:2回答:3

我有一个包含多个CSV文件的文件夹。我想将所有这些都制作成带有代表每个CSV文件的表格的XLS(或xlsx)。

这里的主要区别是尚未安装Excel,也无法安装Excel。

我了解我也许可以使用EPPlus库-http://epplus.codeplex.com/。我还阅读了有关使用Access数据库引擎-http://www.microsoft.com/en-us/download/details.aspx?id=13255的信息。

我经历了许多不同的脚本,以传统方式将CSV转换为XLS,并尝试将它们转换为使用其中一种,但似乎还没有走得太远。如果没有Excel,这甚至可能吗?

如果可行的话,我愿意安装类似LibreOffice的工具,并学习编写脚本。

excel powershell csv xls xlsx
3个回答
4
投票

如果使用openxml格式* .xlsx,则无需安装Office就可以处理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

默认情况下,数据导入从第2行,第2列开始,可以轻松更改:

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

2
投票

您可能还会发现https://github.com/dfinke/ImportExcel有用。

从示例中,

gsv | Export-Excel .\test.xlsx -WorkSheetname Services

dir -file | Export-Excel .\test.xlsx -WorkSheetname Files

0
投票

抱歉,这是Kira的问题,但我无法发表评论,因此我必须这样写。抱歉,您能否解释一下-PassThru,-Verbose和-AutofitColumns参数的作用?脚本工作正常,但我不太了解您是如何做到的。

© www.soinside.com 2019 - 2024. All rights reserved.