Как мне создать текстовый файл, чтобы при его открытии в Excel строки группировались вместе?
Вопрос
Я собираю некоторые данные с помощью Perl-скрипта.Данные должны быть просмотрены и обработаны другими пользователями с помощью Excel.В настоящее время я записываю данные в виде текстового файла с разделителями в виде табуляции, и Excel может открыть это просто отлично.
Однако в данных существует иерархия, и рецензентам было бы легче увидеть дерево, а не плоский список.То есть вместо представления данных в виде столбцов,
foo foo1
foo foo2
foo foo3
bar bar1
bar bar2
...
представьте его в виде дерева, которое можно развернуть щелчком мыши:
foo
foo1
foo2
foo3
bar
bar1
bar2
...
Групповая функция Excel (найдена в 2007 году в разделе "Данные> Схема > Группа") хорошо подходит для этой презентации, поскольку с ней немного проще работать, чем со сводными таблицами.
Какой самый простой способ для нас перейти от этого плоского списка столбцов к этому сгруппированному списку?В идеале я мог бы записать данные в текстовой форме, чтобы Excel автоматически применял группировку при их импорте.В качестве альтернативы, если бы было небольшое количество шагов, которые рецензент мог бы применить после импорта данных, например, применить макрос или шаблон, это тоже было бы нормально.
Решение
Поскольку вы уже используете Perl, я предлагаю вам создать файл Excel непосредственно в Perl, используя отличный модуль CPAN Электронная таблица :: 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);
.
.
Другие советы
Выберите все строки, включая заголовки столбцов, в списке, который вы хотите отфильтровать.
Подсказка Щелкните верхнюю левую ячейку диапазона, а затем перетащите в нижнюю правую ячейку.
- В меню "Данные" выберите пункт "Фильтр", а затем выберите пункт "Расширенный фильтр".
- В диалоговом окне Расширенный фильтр нажмите кнопку Отфильтровать список на месте.
Установите флажок Только уникальные записи, а затем нажмите кнопку ОК.
Отобразится отфильтрованный список, а повторяющиеся строки будут скрыты.
В меню Правка выберите пункт Буфер обмена Office.
Отобразится панель задач буфера обмена.
Убедитесь, что отфильтрованный список по-прежнему выбран, а затем нажмите кнопку Копировать Копировать.
Отфильтрованный список выделяется ограничивающими контурами, а выделенный элемент отображается в виде элемента в верхней части буфера обмена.
В меню "Данные" выберите пункт "Фильтр", а затем нажмите "Показать все".
Исходный список будет отображен повторно.
Нажмите клавишу DELETE.
Исходный список будет удален.
В буфере обмена щелкните по элементу отфильтрованного списка.
Отфильтрованный список отображается в том же месте, что и исходный список.
Последние версии Excel (здесь мы используем 2003 год) могут использовать формат XML, xlsx.Файл xlsx - это zip-файл XML-файла.Если вы хотите создать файл, который будет открываться в Excel с нужными вам настройками, попробуйте следующее:сначала создайте файл шаблона с нужной вам группировкой.Сохраните его как xlsx.Распакуйте файл с помощью стандартного программного обеспечения zip.Взгляните на то, что внутри.Я специально не работал с группировкой, но все команды в вашей электронной таблице будут там в форме xml, вам нужно будет выяснить, где задана группировка.Затем остается внести соответствующие изменения в xml-файл и повторно заархивировать.Требуется немного усилий, но вы можете использовать этот метод для программного создания файлов, которые предварительно сгруппированы.Возможно, существуют библиотеки Perl, специально предназначенные для этого, я не знаю.
CSV-файл также очень легко сгенерировать.OpenOffice позволяет вам выбирать, как анализировать данные, но Excel исключает столбцы, разделенные запятыми (без каких-либо кавычек), и строки, разделенные CRLF.
A1,A2,A3
B1,B2,B3
и т.д.