Excel 使用Powershell将整个列从一个CSV文件复制到另一个CSV文件

Excel 使用Powershell将整个列从一个CSV文件复制到另一个CSV文件,excel,powershell,csv,Excel,Powershell,Csv,我有两个CSV文件:File1.CSV有一个包含4000多行的列。File2.csv有200列,包含10000多行内容。我想在file1.csv中添加一列作为File2.csv中的附加列。我可以将其添加到现有文件的最右端。我在网上找到了几个选择,但没有一个像我所希望的那样有效。我可以使用Input CSV cmdlet并添加属性来完成此操作,但这需要1个多小时才能执行。有没有什么方法可以做到这一点,而不必将CSV内容转换为PSObject?我过去使用过Get Content和Set Conten

我有两个CSV文件:File1.CSV有一个包含4000多行的列。File2.csv有200列,包含10000多行内容。我想在file1.csv中添加一列作为File2.csv中的附加列。我可以将其添加到现有文件的最右端。我在网上找到了几个选择,但没有一个像我所希望的那样有效。我可以使用Input CSV cmdlet并添加属性来完成此操作,但这需要1个多小时才能执行。有没有什么方法可以做到这一点,而不必将CSV内容转换为PSObject?我过去使用过Get Content和Set Content,但这会将一个文件附加到另一个文件的底部。是否有任何方法可以做类似的事情,但附加到现有文件的右侧

这段代码让我更接近我所需要的。这个问题是Excel没有保存或关闭。关于如何通过修复下面的代码或更简单/更有效的方法来解决此问题,您有什么想法吗

$source = "C:\Users\Desktop\Script_Development\04-16-2015\Bit.csv"
$dest =  "C:\Users\Desktop\Script_Development\04-16-2015\MergedwithHeader_04-16-2015.csv"
$Excel = New-Object -ComObject Excel.Application 
$Excel.visible = $false
$Workbooksource = $excel.Workbooks.open($source) 
$Worksheetsource = $Workbooksource.WorkSheets.item("Bit") 
$Worksheetsource.activate()  
$range = $Worksheetsource.Range("A1").EntireColumn 
$range.Copy() | out-null 

$Workbookdest = $excel.Workbooks.open($dest) 
$Worksheetdest = $Workbookdest.Worksheets.item("MergedwithHeader_04-16-2015") 
$Range = $Worksheetdest.Range("FT1") 
$Worksheetdest.Paste($range)  
$Workbookdest.SaveAs("C:\Users\Desktop\Script_Development\04-16-2015\MergedwithHeader_04-16-2015.xls")
$Excel.quit()

下面的代码将在文件的行中循环。您可以使用它将每一行读入ArrayList

$FileData = Get-Content "$Filename"
foreach ($i in $FileData)
{
    DoSomethingWithLine($i)
}
然后循环遍历另一个文件,并将每一行与存储在ArrayList中的一行组合起来,用必要的逗号和引号将其连接起来,然后使用“添加内容”将每一行附加到新文件中


有很多其他更复杂的方法可以做到这一点。

我能够修复我的初始脚本。但这仍然很有帮助,它给了我更多的想法。非常感谢。