我有两个CSV文件:File1.csv有一列有4000多行。 File2.csv有200列,内容超过10000行。我想在file1.csv中添加一列作为File2.csv上的附加列。我可以将它添加到现有文件的最后(最右边)。我在网上找到了几个选项,但没有一个是按照愿望运作的。我可以使用Input-CSV cmdlet完成它并添加一个属性,但执行时间超过约1小时。有没有办法做到这一点,而无需将CSV内容转换为PSobjects?我过去使用过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()
答案 0 :(得分:0)
以下代码将遍历文件的行。您可以使用它将每行读入ArrayList。
$FileData = Get-Content "$Filename"
foreach ($i in $FileData)
{
DoSomethingWithLine($i)
}
然后循环浏览另一个文件,并将每一行与存储在ArrayList中的行组合,将其与必要的逗号和引号连接,然后使用Add-Content
将每行附加到新文件。< / p>
还有许多其他更复杂的方法可以做到这一点。