未安装 Excel 的 CSV 到 multi-sheet XLS。电源外壳
CSVs to multi-sheet XLS without Excel installed. Powershell
我有一个包含多个 CSV 文件的文件夹。我想把它们全部拿走并制作一个 XLS(或 xlsx),其中 sheet 代表每个 CSV 文件。
此处的主要区别在于 Excel 未安装且无法安装。
我知道我可以使用 EPPlus 库 - http://epplus.codeplex.com/。
我还读过使用 Access 数据库引擎 - http://www.microsoft.com/en-us/download/details.aspx?id=13255 .
我已经研究了很多不同的脚本,以传统方式将 CSV 转换为 XLS,并尝试将它们转换为使用其中之一,但似乎进展不大。如果没有 Excel,这甚至可能吗?
如果可行,我愿意安装类似 LibreOffice 的软件并学习使用它编写脚本。
如果您使用 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
编辑-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
您可能还会发现 https://github.com/dfinke/ImportExcel 有用。
根据示例,
gsv | Export-Excel .\test.xlsx -WorkSheetname Services
dir -file | Export-Excel .\test.xlsx -WorkSheetname Files
我的最终剧本
# **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
我有一个包含多个 CSV 文件的文件夹。我想把它们全部拿走并制作一个 XLS(或 xlsx),其中 sheet 代表每个 CSV 文件。
此处的主要区别在于 Excel 未安装且无法安装。
我知道我可以使用 EPPlus 库 - http://epplus.codeplex.com/。 我还读过使用 Access 数据库引擎 - http://www.microsoft.com/en-us/download/details.aspx?id=13255 .
我已经研究了很多不同的脚本,以传统方式将 CSV 转换为 XLS,并尝试将它们转换为使用其中之一,但似乎进展不大。如果没有 Excel,这甚至可能吗?
如果可行,我愿意安装类似 LibreOffice 的软件并学习使用它编写脚本。
如果您使用 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
编辑-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
您可能还会发现 https://github.com/dfinke/ImportExcel 有用。
根据示例,
gsv | Export-Excel .\test.xlsx -WorkSheetname Services
dir -file | Export-Excel .\test.xlsx -WorkSheetname Files
我的最终剧本
# **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