如何使用除“,”之外的分隔符将分隔文件加载到Excel特定工作表中
在PowerShell中,如何使用分隔符以外的分隔符将分隔文件加载到Excel特定工作表中(例如,文件用;
分隔)。
我知道如何使用以下方法将CSV文件加载到工作表:
$processes = Import-Csv -Path $csvFile $Excel = New-Object -ComObject Excel.Application ...
但是,这假设:
-
数据发送到sheet1(我需要指定目标工作表名称,如果不存在则创build它)。
-
input文件是CSV,在我的情况下,分隔符可能不是“,”。
我认为在加载之前用areplace分隔符,但不知怎的,它看起来不整齐,因为逗号可能存在于文字内部(例如c1;“two; strings”; c3)。
我不是要求完整的代码,只是一个指针或引用将为我服务。
使用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()
方法不会返回工作簿对象,因此您必须在打开文件后自行将工作簿分配给variables。
另请注意,如果分隔符与系统区域设置中定义的分隔符不同,则该文件的扩展名为.csv,否则分隔符将被忽略。
你有两个问题,所以让我们按顺序解决它们。
数据发送到sheet1(我需要指定目标工作表名称,如果不存在则创build它)。
所以然后指定表单,没有什么阻止你这样做。
$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()
好的,这个问题是处理的。
input文件是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()