2016-12-12 6 views
0

私はそれらを比較する必要がある2つのcsvファイルを持っています。変更してマークする(ハイライト)これらのプロパティはいくつかの方法。私はすでに結果のファイルにすべての値とすべてのプロパティを持っていますが、変更された特定のプロパティをマークする方法はわかりません。それを行う方法は、パワーシェルですか?ここでCsv diffでpowershellを使用して新しいファイルの変更を表示(ハイライト表示)

は私のコードのサンプルです:だから

[CmdletBinding()] 
    param(
     [Parameter(Mandatory=$true)] 
     $file1, 
     [Parameter(Mandatory=$true)] 
     $file2 
    ) 
    $content1 = Import-Csv -Path $file1 
    $content2 = Import-Csv -Path $file2 
    $props = $content1 | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name 
    $comparedLines = Compare-Object $content1 $content2 -Property $props -PassThru | Where-Object {$_.SideIndicator -eq "=>" } 

    $comparedLines | Export-csv -Path C:\FullPUF\Difference.csv –NoTypeInformation 

答えて

1

私はこれを正しく理解していれば、$content2は右、新しいファイルのですか?

この場合、$comparedlinesには変更されたすべての値が含まれます。それが正しいとすれば、私たちはビジネスに入ります。Doug Finkeはこれを簡単にするために、絶対に素晴らしいPowerShellモジュールimportExcelを書いたからです。しかし、まず、どうしたのですか?

テストするファイルがいくつか必要でしたが、ソースファイルがないため、値を推測できませんでした。名前と位置の値を持つ簡単なCSVを作成し、Content1とContent2の間の位置番号を変更しました。最初のオフ、この問題を解決するための方法

enter image description here

、今インポート、Excelをダウンロードしてください。あなたはPowerShellのバージョン4.0以上にしている場合は、そのようにPowerShellのからそれをインストールすることができます。

Find-Module ImportExcel | Install-Module 

このモジュールはConditionalTextフィルタルールの概念を持っています。このように新しいものを作成することができます。

1..5 | Export-Excel C:\temp\test.xslx -Show` 
    -ConditionalText (New-ConditionalText -ConditionType GreaterThan 3) 

この意志出力し、その中に5までの番号1で新しいスプレッドシートを表示し、3

我々はContainsTextが値我々が一致するハイライトの行をすることができますよりも高いものを強調知っている。

したがって、ForEach-Objectを使用して$ comparLinesの値を取得し、プロパティのいずれかが含まれている場合にその行を強調表示するNew-ConditionalTextルールを作成します。

$highlight =$comparedLines | % {New-ConditionalText -ConditionalType ContainsText $_.Name} 

次に、我々は$ content2の内容をエコーし​​、新しい.xslxファイルを作成して条件付き書式ルールを適用するためにエクスポート-Excelを使用します。

$content2 | Export-Excel r:\test.xlsx -show -ConditionalText ($highlight) 

、出力は

enter image description hereおそらくコードをほんの少しを果たし、そしてそれは、と呼ばれているものは何でもあなたの列に合うように変更する必要があります

が、これはどのようにあなたができることですcsvをエクスポートし、PowerShellを使用して相違点を強調表示します。 .csvにハイライトやテキスト形式などはないので、代わりにExcel SpreadSheetを使用する必要があります。あなたはどこでも:)

+0

があなたの提案FoxDeployありがとうござい深く掘るために私が必要な場合は

レムは知っています。あなたが$ content2が新しいファイルであると言ったように、$ content1は古いファイルです。その間に変更された行は$ comparLinesにあります。さて、私のシナリオでは、どの特定のプロパティが古いファイルから新しいファイルに変更されたのかわかりません。これを動的に把握する方法があります。したがって、出力ファイルでは、古いファイルから新しいファイルに変更された場合、特定のセルの色が付いているようになります。結果ファイルに似ていますが、変更が発生したセル(Rankプロパティにあります) – Moyeto

+0

さらに手伝っていただくために、入力ファイルのコピーが必要です。つまり、これはあなたが正しい方向に向かうと思うし、おそらく「答え」と記される価値があるでしょうか? :) – FoxDeploy

関連する問題