簡體   English   中英

使用PowerShell將CSV導入Excel

[英]Import csv to excel using 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()

有什么建議么? 謝謝。

您有兩個選擇。 一種,如果您的文件擴展名是.csv而不是.txt ,它將按原樣工作。 第二個選項,確保為逗號分隔符參數傳遞$True ,如下所示:

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

您需要向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/zh-CN/library/office/ff837097.aspx
第一個$ false告訴它不要將連續的定界符視為一個,第二個$ false告訴它不要將Tab視為定界符,下一個$ false則對分號表示相同,並且$ true告訴它使用逗號作為定界符。 在此之后,我沒有包含其他定界符選項,因為定界符都是可選的,並且您只需要包含直到您需要的最后一個相關參數(將逗號設置為$ true)即可​​。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM