如何使用除“,”之外的分隔符将分隔文件加载到Excel特定工作表中

在PowerShell中,如何使用分隔符以外的分隔符将分隔文件加载到Excel特定工作表中(例如,文件用;分隔)。

我知道如何使用以下方法将CSV文件加载到工作表:

 $processes = Import-Csv -Path $csvFile $Excel = New-Object -ComObject Excel.Application ... 

但是,这假设:

  1. 数据发送到sheet1(我需要指定目标工作表名称,如果不存在则创build它)。

  2. 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()