2009-06-24 2 views
4

Я собираю некоторые данные через Perl-скрипт. Данные должны быть пересмотрены и обработаны другими с помощью Excel. В настоящее время я пишу данные как текстовый файл с разделителями табуляции, и Excel может открыть это просто отлично.Как создать текстовый файл, поэтому, когда он открывается в Excel, строки группируются вместе?

Однако есть иерархия данных, и рецензентам будет проще видеть дерево, а не плоский список. То есть, вместо того, чтобы представить данные в столбцах,

foo foo1 
foo foo2 
foo foo3 
bar bar1 
bar bar2 
... 

его в виде щелчка к расширению дерева:

foo 
    foo1 
    foo2 
    foo3 
bar 
    bar1 
    bar2 
... 

в Excel групповых функций (найдены в 2007 году в рамках «Данные> Структура> Group ») является хорошим подспорьем для этой презентации, будучи немного проще в управлении, чем сводные таблицы.

Что является самым простым способом перейти от этого плоского списка столбцов к этому сгруппированному списку? В идеале я мог бы записать данные в текстовой форме, чтобы Excel автоматически применял группировку, когда он был импортирован. В качестве альтернативы, если было небольшое количество шагов, которые рецензент мог применить после импорта данных, например, применение макроса или шаблона, это тоже было бы хорошо.

ответ

3

Поскольку вы уже используете Perl, я предлагаю вам создать файл Excel непосредственно в Perl, используя отличный модуль Spreadsheet::WriteExcel CPAN, который имеет поддержку Excel outlines.

работы что-то вроде этого:

 . 
    . 
    $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); 
    . 
    . 
+0

Это выглядит многообещающе. Изучение ... –

+0

Документы немного тонкие в этой области, но примеры хороши и удобны в использовании. –

+0

Док довольно хорошо здесь: http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm#OUTLINES_AND_GROUPING_IN_EXCEL Теперь я просто должен увидеть, если я могу получить установлен этот модуль , –

1
  1. Выберите все строки, включая заголовки столбцов, в списке, который вы хотите фильтровать.

    ShowTip Нажмите верхнюю левую ячейку диапазона, а затем перетащите в нижнюю правую ячейку.

  2. В меню «Данные» выберите «Фильтр», а затем «Расширенный фильтр».
  3. В диалоговом окне «Расширенный фильтр» выберите «Фильтровать список» на месте.
  4. Установите флажок Только уникальные записи и нажмите кнопку ОК.

    Отображается отфильтрованный список и дублируются строки.

  5. В меню «Правка» щелкните «Буфер обмена».

    Отображается панель задач Clipboard.

  6. Убедитесь, что выбранный фильтр по-прежнему выбран, а затем нажмите кнопку Копировать копию.

    Отфильтрованный список выделен граничными очертаниями, и выбор отображается как элемент в верхней части буфера обмена.

  7. В меню «Данные» выберите «Фильтр», а затем «Показать все».

    Исходный список повторно отображается.

  8. Нажмите клавишу DELETE.

    Оригинальный список удален.

  9. В буфере обмена нажмите на элемент отфильтрованного списка.

    Отфильтрованный список отображается в том же месте, что и исходный список.

+0

Я не ищу, чтобы удалить повторяющиеся строки. –

1

Последние версии Excel (2003 - это то, что мы здесь используем) могут использовать формат XML xlsx. Файл xlsx представляет собой zip файла XML. Если вы хотите создать файл, который откроется в Excel с нужными настройками, попробуйте это: сначала создайте файл шаблона с нужной группировкой. Сохраните его как xlsx. Разархивируйте файл с помощью стандартного программного обеспечения zip. Взгляните на то, что внутри. Я не работал с группировкой специально, но все команды в вашей таблице будут находиться в форме xml, вам нужно будет выяснить, где установлена ​​группировка. Затем нужно внести соответствующие изменения в xml и повторно закрепить. Немного усилий, но вы можете использовать этот метод для программного создания файлов, которые предварительно сгруппированы. Возможно, библиотеки Perl специально предназначены для этого, я не знаю.

+0

Я ткнул в распакованных файлах. Задача дешифрования форматов хранения и взлома их довольно сложна. –

0

Файл CSV также очень легко сгенерирован. OpenOffice позволяет вам выбирать, как разбирать вещи, но excel исключает столбцы с разделителями-запятыми (без какой-либо цитаты) и строки с разделителями CRLF.

A1,A2,A3 
B1,B2,B3 

т.д.

+0

Как это помогает мне создать дерево? –