Как создать текстовый файл, чтобы при его открытии в Excel строки группировались вместе? - PullRequest
4 голосов
/ 24 июня 2009

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

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

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

представить его в виде дерева с расширением по клику:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

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

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

Ответы [ 4 ]

3 голосов
/ 24 июня 2009

Поскольку вы уже используете Perl, я предлагаю вам создать файл 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);
     .
     .
1 голос
/ 24 июня 2009

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

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

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

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

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

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

    Отображается область задач буфера обмена.

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

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

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

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

  8. Нажмите клавишу УДАЛИТЬ.

    Исходный список удален.

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

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

0 голосов
/ 24 июня 2009

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

A1,A2,A3
B1,B2,B3

и т.д.

...