Excelで開いたときに行がグループ化されるようにテキストファイルを作成するにはどうすればよいですか?
質問
Perlスクリプトを使用してデータを収集しています。データは、Excelを使用して他のユーザーがレビューおよび処理する必要があります。現在、タブ区切りテキストファイルとしてデータを書き出しているので、Excelで問題なく開くことができます。
ただし、データには階層があり、レビュー担当者はフラットリストではなくツリーを表示する方が簡単です。つまり、データを列に表示するのではなく、
foo foo1
foo foo2
foo foo3
bar bar1
bar bar2
...
クリックして展開するツリーとして表示:
foo
foo1
foo2
foo3
bar
bar1
bar2
...
Excelのグループ関数(2007年に" Data> Outline> Group"にあります)は、このプレゼンテーションに適しています。ピボットテーブルよりも操作が少し簡単です。
このフラットな列リストからこのグループ化リストに移動する最も簡単な方法は何ですか?理想的には、Excelがインポート時にグループ化を自動的に適用するテキスト形式でデータを書き出すことができます。また、マクロやテンプレートを適用するなど、データをインポートした後にレビューアーが適用できるステップの数が少ない場合でも、問題ありません。
解決
すでにperlを使用しているため、優れたCPANモジュール Spreadsheet :: WriteExcel は Excelのアウトライン。
次のように動作します:
.
.
$worksheet->write('A2', 'foo');
$worksheet->write('B3', 'foo1');
$worksheet->write('B4', 'foo2');
$worksheet->write('B5', 'foo3');
$worksheet->set_row(2, undef, undef, 0, 1, 1);
$worksheet->set_row(3, undef, undef, 0, 2);
$worksheet->set_row(4, undef, undef, 0, 2);
$worksheet->set_row(5, undef, undef, 0, 2);
.
.
他のヒント
-
フィルタリングするリストで、列ヘッダーを含むすべての行を選択します。
ShowTip 範囲の左上のセルをクリックして、右下のセルにドラッグします。
- [データ]メニューの[フィルター]をポイントし、[高度なフィルター]をクリックします。
- [高度なフィルター]ダイアログボックスで、[リストのフィルター]をクリックします。
-
「一意のレコードのみ」チェックボックスを選択し、「OK」をクリックします。
フィルタリングされたリストが表示され、重複する行は非表示になります。
-
[編集]メニューの[Officeクリップボード]をクリックします。
クリップボードの作業ウィンドウが表示されます。
-
フィルタリングされたリストがまだ選択されていることを確認し、[コピー] [コピー]ボタンをクリックします。
フィルタリングされたリストは境界線で強調表示され、選択範囲はクリップボードの上部にアイテムとして表示されます。
-
[データ]メニューの[フィルター]をポイントし、[すべて表示]をクリックします。
元のリストが再表示されます。
-
DELETEキーを押します。
元のリストは削除されます。
-
クリップボードで、フィルターされたリスト項目をクリックします。
フィルタリングされたリストは、元のリストと同じ場所に表示されます。
Excelの最新バージョン(2003はここで使用しているものです)では、XML形式のxlsxを使用できます。 xlsxファイルは、XMLファイルのzipです。必要な設定でExcelで開くファイルを作成する場合は、これを試してください。まず、目的のグループ化を使用してテンプレートファイルを作成します。 xlsxとして保存します。標準のzipソフトウェアを使用してファイルを解凍します。中身を見てみましょう。グループ化は特に行っていませんが、スプレッドシート内のすべてのコマンドはXML形式であるため、グループ化が設定されている場所を把握する必要があります。次に、xmlに適切な変更を加えて再圧縮するだけです。少し手間はかかりますが、この方法を使用して、事前にグループ化されたファイルをプログラムで作成できます。これに特化したPerlライブラリがあるかもしれません、わかりません。
CSVファイルも非常に簡単に生成できます。 OpenOfficeでは、物事を解析する方法を選択できますが、コンマ区切りの列(引用符なし)とCRLF区切りの行を除きます。
A1,A2,A3
B1,B2,B3
etc。