我试图转换多个excel文件(xls)到csv,它位于一个文件夹中使用powershell。
我可以转换一个文件,但需要帮助转换多个文件在一个文件夹。但需要建议如何转换多个文件。
$ExcelWB = new-object -comobject excel.application
$Workbook = $ExcelWB.Workbooks.Open(c:\temp\temp.xls)
$Workbook.SaveAs("c:\temp\temp.csv",6)
$Workbook.Close($false)
$ExcelWB.quit()
4条答案
按热度按时间yrdbyhpb1#
您可以将其 Package 在一个循环中,迭代所有文件并将
xls
扩展名更改为csv
:sdnqo3pr2#
这些未经测试的代码需要注意,但它应该能帮助您解决问题
使用
Get-ChildItem
获取xls文件,然后通过替换文件的扩展名FullName
来构建一个新的名称。yacmzcpb3#
使用Doug Finke开发的ImportExcel模块,从xlsx文件到csv的转换可以更快地完成,而无需COM对象-因此无需安装Excel:
或者反过来说:
Import-Excelcmdlet的可用参数:
WorksheetName
指定Excel工作簿中要导入的工作表的名称。默认情况下,如果未提供名称,则将导入第一个工作表。
DataOnly
仅导入包含数据的行和列,不导入空行和空列。
HeaderName
指定要使用的自定义属性名称,而不是TopRow的列标题中定义的值。
NoHeader
自动生成特性名称(P1、P2、P3、..),而不是在TopRow的列标题中定义的名称。
StartRow
从开始导入数据的那一行,StartRow上面的所有行都被忽略。默认情况下,这是第一行。
EndRow
默认情况下,将导入工作表中最后一个单元格之前的所有行。如果指定,则导入将在此行停止。
StartColumn
要从中读取数据的第一列的编号(默认为1)。
EndColumn
默认情况下,导入读取到最后一个填充的列,-EndColumn告诉导入在较早的数字处停止。
密码
接受将用于打开受密码保护的Excel文件的字符串。
6tr1vspr4#
扩展@arco444的答案,如果您批量执行此操作,则应该在循环外创建excel对象,以实现更高性能的转换
抱歉,我不能评论和编辑队列已满了一段时间,所以张贴作为一个答案。