使用PowerShell将文本文件数据复制到现有的Excel工作簿中

所以我有一个问题,从一个Text.File数据导出到Excel工作簿,其中包含一个月的数据。 结果发生的是,代码打开了一个名为“Geraldine3-16-2016”的表名和标题的新工作簿 ,我不介意,但是它永远不会被添加或复制到主工作簿中。 因此,最终,主要工作簿中唯一改变的是新工作表被创build,称为“工作表1”,但是没有来自文本文件的数据。 任何帮助非常感谢,提前谢谢!

function Release-Ref ($ref) { ([System.Runtime.InteropServices.Marshal]::ReleaseComObject( [System.__ComObject]$ref) -gt 0) [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() } $File='C:\users\cesar.sanchez\downloads\Returns data 2-16-15.xlsx' $TextFile='C:\Users\cesar.sanchez\downloads\Geraldine3-16-2016.txt' $Excel = New-Object -C Excel.Application $Excel.Visible=$true #For troubleshooting purposes only. # $Excel.DisplayAlerts = $false $TextData = $Excel.Workbooks.Opentext($TextFile,$null,$true) $ExcelData = $Excel.Workbooks.Open($File) # Open Template $NewS_ExcelData=$ExcelData.sheets.add() $TexttoCopy=$TextData.Sheets.item(1) $TexttoCopy.copy($NewS_ExcelData) 

我相信它与代码的这一部分有关,但我不完全确定。

 $NewS_ExcelData=$ExcelData.sheets.add() $TexttoCopy=$TextData.Sheets.item(1) $TexttoCopy.copy($NewS_ExcelData) 

.OpenText.Open不一样。 它不返回一个对象。 (发现困难的方式!)

$TexttoCopy=$TextData.Sheets.item(1)抛出错误:

 You cannot call a method on a null-valued expression. 

替代代码:

 $File='C:\users\cesar.sanchez\downloads\Returns data 2-16-15.xlsx' $TextFile='C:\Users\cesar.sanchez\downloads\Geraldine3-16-2016.txt' $Excel = New-Object -C Excel.Application $Excel.Visible=$true #For troubleshooting purposes only. # $Excel.DisplayAlerts = $false $Excel.Workbooks.Opentext($TextFile,$null,$true) # Open Text file $TextData = $Excel.ActiveWorkbook # Assign active workbook $ExcelData = $Excel.Workbooks.Open($File) # Open Template $NewS_ExcelData = $ExcelData.sheets.add() $TexttoCopy = $TextData.Sheets.item(1) $TexttoCopy.copy($NewS_ExcelData) 

你也可以find$TexttoCopy.move($NewS_ExcelData)有用。