2016-12-07 20 views
0

我是Powershell的新手,我需要將文本文件解析爲excel並編輯內容。Powerhell中的Excel函數

我設法打開文件與下面的腳本:

$Excel = New-Object -ComObject Excel.Application 
$Excel.Visible = $true 
$Excel.DisplayAlerts = $false 
$Excel.Workbooks.OpenText("Documents\myfile.txt") 

它運行無異常,但我留下的數據告訴我,文件加載不正確。

我需要設置FieldInfo等參數進行導出。

我該怎麼做?

感謝您的幫助。

+0

你說的「它不是正確加載」是什麼意思? –

+0

它將帶有ID值的列加載爲數字,這意味着ID號碼中的初始值爲零。例如員工編號00051作爲員工編號51加載。 – user2109307

回答

0

當您通過文本文件或手動輸入將數據導入Excel時,Excel將嘗試解釋它是什麼類型的數據,文本,日期或編號。您正在將看起來像數字的文本引入Excel中。

一個解決方案是讓Powershell做所有的工作,讓它加載文件,然後遍歷每一行。然後您可以在加載數據之前強制格式化。

事情是這樣的:

$Excel = New-Object -ComObject Excel.Application 
$Excel.Visible = $true 
$wb = $Excel.Workbooks.add() 
$ws = $wb.Worksheets[1] 

Import-Csv "Documents\myfile.txt" | % {$i = 1}{ 

    $ws.Range("A" + $i).NumberFormat = '@' 
    $ws.Range("A" + $i).Value = $_.Field1 

    #Repeat for each field 

    $i++ 
) 
1

您必須從文件中獲取該項目才能在Excel中加載它。 DO是這樣的:

$excel = new-object -comobject excel.application 
$file = get-item "E:\myfile.txt" # Mention the path of the file 
$excel.Visible=$true 
$excel.displayalerts = $False 
$wb = $excel.workbooks.open($file) 

希望它可以幫助你。

+0

如何在加載數據之前將列類型設置爲文本?我與excel自動鑄造列有問題,而不是文本 – user2109307

+0

分享文本文件,並告訴你想要在Excel中顯示什麼。 它的非常通用的答案是,沒有實際的數據。 我發佈的示例只是爲了加載文本文件中的數據。您可以將它用於任何文件類型 –

+0

想象一下像這樣的輸入:http://pastebin.com/eBcNpuwy。當解析成excel時,Inital零點會丟失。我需要指定第一列作爲文本。我怎樣才能做到這一點 ? – user2109307