在PowerShell中,如何使用,
之外的分隔符将分隔文件加载到Excel特定工作表中(例如,文件以;
分隔)。
我知道如何使用以下方法将CSV文件加载到工作表中
$processes = Import-Csv -Path $csvFile
$Excel = New-Object -ComObject Excel.Application
...
但是,这假定:
数据转到sheet1(我需要指定目标工作表名称,如果不存在则创建它)。
输入文件是CSV,在我的情况下,分隔符可能不是“,”。
我考虑在加载之前用,
替换分隔符,但不知何故它看起来不整洁,因为逗号可能存在于文字内(例如c1;“two; strings”; c3)。
我不是要求完整的代码,只是指针或引用会很好地为我服务。
答案 0 :(得分:2)
使用Open()
方法:
$file = 'C:\path\to\file'
$undef = [Type]::Missing
$wb = $excel.Workbooks.Open($file, $undef, $undef, 6, $undef, $undef, $undef, $undef, ';')
或OpenText()
方法:
$file = 'C:\path\to\file'
$undef = [Type]::Missing
$excel.Workbooks.OpenText($file, $undef, $undef, 1, $undef, $undef, $undef, $undef, $undef, $undef, $true, ';')
$wb = $excel.Workbooks.Item(1)
请注意,OpenText()
方法不会返回工作簿对象,因此您必须在打开文件后自己将工作簿分配给变量。
另请注意,如果分隔符字符与系统区域设置中定义的分隔符不同,则文件的扩展名不得为.csv,否则分隔符将被忽略。
答案 1 :(得分:2)
您有两个问题,请让我们按顺序解决。
数据转到sheet1(我需要指定目标表名称和 如果没有那就创造它。)
然后指定表格,没有什么可以阻止你这样做。
$XL = New-Object -ComObject Excel.Application
$WB = $XL.Open("$env:USERPROFILE\Documents\SuperImportant.xlsx")
$WS = $WB.Worksheets.Items("MySheet")
$WS.Select()
如果不存在,需要制作吗?好的,先做个检查。
$XL = New-Object -ComObject Excel.Application
$WB = $XL.Open("$env:USERPROFILE\Documents\SuperImportant.xlsx")
If(!"MySheet" -in $WB.Worksheets.Name){
$WB.Worksheets.Add("MySheet")
}
$WS = $WB.Worksheets.Items("MySheet")
$WS.Select()
好的,这个问题已经解决了。
输入文件是CSV,在我的情况下,分隔符可能不是","。
Ansgar Wiechers已经向您展示了如何将文件直接导入Excel,因此我将PowerShell作为代理方法。您可以使用Import-Csv
将其导入PowerShell时指定。
$MyData = Import-Csv C:\Path\To\MyFile.csv -Delimiter ';'
然后您只需将其复制到剪贴板(作为制表符分隔的CSV)并将其粘贴到Excel中。
$MyData | ConvertTo-CSV -Del "`t" -NoType | Clip
$XL.ActiveCell.PasteSpecial()