如何使用 Power Shell 复制 .​​CSV 文件中的文本

如何使用 Power Shell 复制 .​​CSV 文件中的文本

想要复制服务器上 .CSV 文件中的文本,我找到了一段可以修改和使用的代码。它似乎可以在安装了 Office 的 PC 上运行,但在需要运行它的服务器上却不行。我猜是因为服务器没有安装 Office。

代码:

#Get list of files
$Files = Get-ChildItem \\FilePath\$Store.csv

#Launch Excel
$XL = New-Object -ComObject Excel.Application

ForEach($File in $Files){
    #Open the file and get the Data sheet
    $WB = $XL.Workbooks.Open($File.Fullname)
    $Sheet = $WB.Worksheets.Item($Store)

    #Get the value from B2
    $Branch = $Sheet.Rows.Item(2).Cells.Item(2).Value2

    #Loop through rows, skipping the first 13, and set the branch value
    $($Sheet.UsedRange.Rows) | Select -Skip 13 | ForEach{ $_.Cells.Item(2).Value2 = $Branch }

    #Save and close the file
    $WB.Save()
    $WB.Close($true)
}

#Close Excel
$XL.Quit()

是否有其他方法可以操作与上述类似的同一文件中的文本?

答案1

应该比较容易。电源外壳Import-Csv命令:

Import-Csvcmdlet 根据 CSV 文件中的项目创建表格形式的自定义对象。CSV 文件中的每一列都将成为自定义对象的属性,而行中的项目将成为属性值。 Import-Csv适用于任何 CSV 文件,包括由该 cmdlet 生成的文件Export-Csv

如果您的第一行.csv不是标题行,您可以使用参数指定它们-Header

使导入成为变量赋值的一部分:

$CsvData = Import-Csv -Path 'c:\Path\To\File'

您的第一行数据是$CsvData[0],列由分配给列的标题引用:

$CsvData[0].Column1HeaderName

我对 Excel 方法不太熟悉,如果您需要数据处理方面的帮助,请使用更多细节编辑您的问题,例如第一列是行标题还是数据?

相关内容