2017-06-22 5 views
0

私はExcelテーブルで出力にいくつかのリストを取得しようとしていますが、各行が個別のオブジェクトであるためCSVで使用するのと同じではありません。あなたが望む結果を得ることができます」、そして、私は今何をすべきか分からないので状況が複雑になります。私はPowerShellを使用しています。誰かが私にXLSXとCSVユーティリティとの違いを説明してもらえますか?私はいくつかの文書を見ましたが、それは私が理解するのを助けませんでした。CSVとXLSXの違い

$csv = Import-Csv .\test1.csv -Delimiter ';' 

$ref = @($csv.Column1) 
foreach ($row in $csv) { 
    foreach ($col in 'Column2', 'Column3', 'Column4') { 
    if ($ref -contains $row.$col) { $row.$col = '' } 
    } 
} 

$csv | Select-Object Column1,Column2,Column3,Column4 | where Column1 -ne '' 
$csv | Select-Object Column1,Column2,Column3,Column4 | where Column2 -ne '' 

出力は、あなたがImport-CSVコマンドレットを使用して.CSVをインポートするときにコンテキストは、以前の質問から失われ

 
Column1 Column2 Column3 Column4 
------- ------- ------- ------- 
infra-98 infra-852 infra-44 infra-99 
infra-62 infra-85 infra-8 infra-23 
     infra-8 infra-852 infra-10 
     infra-55   infra-70 


Column1 Column2 Column3 Column4 
------- ------- ------- ------- 
infra-1 infra-85 infra-2  infra-99 
infra-98 infra-55 infra-44 infra-23 
infra-2    infra-1  infra-10 
infra-62       infra-70
+0

あなたの質問には、詳細な説明や使用しているコードは含まれていません。 [質問する](http://stackoverflow.com/questions/how-to-ask)から、あなたに良い答えを得るための素晴らしい質問をしてください。 –

+1

私が理解するところから、私はあなたにこのアドバイスを与えることができます:あなたが知る限り知っていることを忘れて、オブジェクト指向が何を意味するのか、パワーシェルでどのように働くのか、CSV形式は何か(ヒラキ無し) XLSX(Excelファイル)はPowershell形式ではありません。それは鳥がレンガのようなCSVファイルに匹敵します。私の視点からは、基本的な誤解があるようです。 – restless1987

+2

xlsxは、Microsoft Excelで使用されるバイナリデータ形式です(実際にはXMLファイルを含むzipフォルダです)。 CSVは表形式の平文形式です。あなたが実際にやりたいことは、別々の列に列を集めてから[転置]することです(https://stackoverflow.com/a/39808624/1630171)。 –

答えて

1

を期待しました。その後、CSVの各行がPowerShellオブジェクトになります。 ImportExcelモジュールを使用してXLSXをインポートした場合も同様です。構造はもはやCSVファイルまたはXLSXファイルと同じではありません。これはもはやスプレッドシートではなく、オブジェクトの集合です。

あなたがImport-CSV PowerShellを使用して、これをインポートした場合は、次の2つのオブジェクトの配列を得るでしょう

Col1,Col2 
a,b 
c,a 

シンプルな.CSVファイルを取ります。

@(
    [pscustomobject]@{ 
     Col1 = 'a' 
     Col2 = 'b' 
    } 
    [pscustomobject]@{ 
     Col1 = 'c' 
     Col2 = 'a' 
    } 
) 

したがって、列ヘッダーのプロパティを持つ2つの別個のオブジェクトです。

これらのオブジェクトのいずれかのプロパティを空の文字列に設定した場合は、オブジェクトをエクスポートして行に戻すときに使用します。あなたは空の "セル"を持っています。

これを回避するには、個々の配列として列を読み込み、それらの配列で比較ロジックを実行し、更新された配列から完全に新しいオブジェクトのコレクションを作成してから書き出します。他の人があなたの他の質問に答えました。

関連する問題