2017-10-23 20 views
1

Excelファイルから複数のシートをCSVファイルにエクスポートしたコードからいくつかのコードを更新しました。私は最初の6行なしでエクスポートする必要があります。それらはすべて同じフォーマットです。CSVオフセット行へのPowerShellエクスポート

各タブにはどこでオフセットを適用できますか?

function ExportWSToCSV { 
    Param(
     [Parameter(Position=0, Mandatory=$true)] [string]$excelPath, 
     [Parameter(Position=1, Mandatory=$true)] [string]$excelFileName, 
     [Parameter(Position=2, Mandatory=$true)] [string]$excelFormat, 
     [Parameter(Position=3, Mandatory=$true)] [string]$csvPath 
    ) 

    Write-Output "Your cvs files are located " $csvPath 

    $excelFile= $excelPath + $excelFileName + $excelFormat 
    $E = New-Object -ComObject Excel.Application 
    $E.Visible = $false 
    $E.DisplayAlerts = $false 
    $wb = $E.Workbooks.Open($excelFile) 
    foreach ($ws in $wb.Worksheets) { 
     $n = $excelFileName + "_" + $ws.Name 
     $ws.SaveAs($csvPath + $n + ".csv", 6) 
    } 
    $E.Quit() 
} 
+0

ブックを閉じる前に変更を破棄次に、エクスポートする前に各シートから最初の6行を削除します。 –

+0

私にこれの例を教えていただけますか?私はすべての同じコードでそれを実行したいと思います。迅速な応答ありがとう – user2181700

答えて

2

組み込みのDelete()メソッドを使用できます。これはRange objectの一部であるEntireRow propertyで利用できます。

変更:

foreach ($ws in $wb.Worksheets) { 
    $n = $excelFileName + "_" + $ws.Name 
    $ws.SaveAs($csvPath + $n + ".csv", 6) 
} 

に:

foreach ($ws in $wb.Worksheets) { 
    $ws.range("A1:A6").EntireRow.Delete() 
    $n = $excelFileName + "_" + $ws.Name 
    $ws.SaveAs($csvPath + $n + ".csv", 6) 
} 
+0

素晴らしい作品です。私は回っていた別の方法を見ていた ありがとう – user2181700

関連する問題