想要复制服务器上 .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-Csv
cmdlet 根据 CSV 文件中的项目创建表格形式的自定义对象。CSV 文件中的每一列都将成为自定义对象的属性,而行中的项目将成为属性值。Import-Csv
适用于任何 CSV 文件,包括由该 cmdlet 生成的文件Export-Csv
。
如果您的第一行.csv
不是标题行,您可以使用参数指定它们-Header
。
使导入成为变量赋值的一部分:
$CsvData = Import-Csv -Path 'c:\Path\To\File'
您的第一行数据是$CsvData[0]
,列由分配给列的标题引用:
$CsvData[0].Column1HeaderName
我对 Excel 方法不太熟悉,如果您需要数据处理方面的帮助,请使用更多细节编辑您的问题,例如第一列是行标题还是数据?