使用PowerShell将csv导入excel

时间:2015-02-12 20:02:45

标签: excel powershell

我尝试导入以逗号分隔的.txt文件。它被导入了。但excel似乎并不明白它是以逗号分隔的。它显示在同一列中。

[threading.thread]::CurrentThread.CurrentCulture = 'en-US'
$wbpath=Join-Path "$psscriptroot" 'file.xlsx'
$importcsv=Join-Path "$psscriptroot" 'file.txt'
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$xl.Workbooks.OpenText($importcsv)
$xl.DisplayAlerts = $false
[threading.thread]::CurrentThread.CurrentCulture = 'en-US'
$xl.ActiveWorkbook.SaveAs($wbpath,51)
$xl.Quit()

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:2)

您有两种选择。一,如果您的文件扩展名为.csv而不是.txt,则它将按原样运行。第二个选项,请确保为{com}-delimiter参数传递$True,如下所示:

$xl.Workbooks.OpenText($importcsv, 2, 1, 1, 1, $False, $False, $False, $True)

答案 1 :(得分:1)

您需要向OpenText方法提供更多参数,以使其看到分隔符。

$wbpath=Join-Path "$psscriptroot" 'file.xlsx'
$importcsv=Join-Path "$psscriptroot" 'file.txt'
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $true
$xlWindows=2
$xlDelimited=1
$xlTextQualifierDoubleQuote=1
$StartRow=1
$xl.workbooks.OpenText($importcsv,$xlWindows,$StartRow,$xlDelimited,$xlTextQualifierDoubleQuote,$false,$false,$false,$true)
$xl.ActiveWorkbook.SaveAs($wbpath,51)
$xl.Quit()

有关详细信息,请参阅MSDN参考:
https://msdn.microsoft.com/en-us/library/office/ff837097.aspx
第一个$ false告诉它不要将连续分隔符视为一个,下一个告诉它不要将Tab视为分隔符,下一个$ false对分号执行相同操作,而$ true告诉它使用逗号作为分隔符。之后还有其他分隔符选项我没有包含,因为分隔符都是可选的,您只需要包含最后一个相关符号的参数(将逗号设置为$ true)。