我正在尝试将2个不同的CSV文件导入到2个不同工作表上的excel工作簿中。
我已经弄清楚了如何创建一个excel工作簿并导入其中一个CSV文件。但是,在创建新工作表时,似乎无法像导入第一个CSV文件一样将第二个CSV文件导入到新工作表中。
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Excel = $Excel.Workbooks.open(C:\Temp\CSVfile1.csv)
#Create new worksheet and import 2nd CSV file
$Excel.Worksheets.add()
$Excel.Sheets(1).Name = 'Errors'
$Excel2 = $Excel.Workbooks.open(C:\Temp\CSVfile2.csv)
第一次CSV文件导入成功。第二个工作表已创建,但第二个csv文件未导入。
显示的错误消息是
You cannot call a method on a null-valued expression.
答案 0 :(得分:1)
我强烈建议对任何与Excel相关的文件使用ImportExcel模块,它使它们更易于使用,并且仅需几秒钟即可使其工作。此外,它的优点是无需安装Microsoft Excel就可以使用读取和编辑Excel文件。
请参见以下示例,以使用ImportExcel模块执行所需的操作:
Import-Csv -Path 'C:\Temp\CSVfile1.csv' | Export-Excel -Path 'C:\Temp\ExportExcelTest.xlsx' -WorkSheetname 'Sheet1'
Import-Csv -Path 'C:\Temp\CSVfile2.csv' | Export-Excel -Path 'C:\Temp\ExportExcelTest.xlsx' -WorkSheetname 'Errors'
此外,ImportExcel还附带了许多可能对您有用的格式设置选项。与使用ComObject修改Excel文件相比,我不推荐它。