Como faço para criar um arquivo de texto por isso, quando ele é aberto no Excel, as linhas são agrupadas?

StackOverflow https://stackoverflow.com/questions/1038811

Pergunta

Estou coletando alguns dados através de um script Perl. As necessidades de dados a serem analisados ??e processados ??por outros usando Excel. Atualmente, estou escrevendo os dados como um arquivo de texto delimitado por tabulação e Excel pode abrir este muito bem.

Há uma hierarquia para os dados, no entanto, e que seria mais fácil para os revisores para ver uma árvore em vez de uma lista simples. Ou seja, em vez de apresentar os dados em colunas,

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

apresentá-la como uma árvore, clique para expandir:

foo
    foo1
    foo2
    foo3
bar
    bar1
    bar2
...

função de grupo do Excel (encontrado em 2007 em "Dados> Contorno> Grupo") é um bom jogo para esta apresentação, sendo um pouco mais simples de operar do que tabelas dinâmicas.

O que é a maneira mais fácil para nós para ir nesta lista plana de colunas a esta lista agrupada? Idealmente, eu poderia escrever os dados em um formulário texto que Excel iria aplicar o agrupamento automaticamente quando ele foi importado. Alternativamente, se houvesse um pequeno número de passos que o revisor poderia aplicar após a importação dos dados, como a aplicação de uma macro ou um modelo, que seria OK também.

Foi útil?

Solução

Uma vez que você já está usando perl, eu sugiro que você criar o arquivo excel diretamente em Perl usando o excelente módulo CPAN Spreadsheet :: WriteExcel que tem suporte para Excel contornos .

Obras algo como isto:

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

Outras dicas

  1. Selecionar todas as linhas, incluindo os cabeçalhos das colunas, na lista que deseja filtrar.

    showTip Clique na célula superior esquerda do intervalo e, em seguida, arraste para a célula inferior direita.

  2. No menu Dados, aponte para Filtro e clique em Filtro avançado.
  3. Na caixa de diálogo Filtro avançado, clique em Filtrar a lista, no lugar.
  4. Selecione os registros exclusivos caixa de seleção somente, e em seguida, clique em OK.

    A lista filtrada é apresentado e as linhas duplicadas são escondidos.

  5. No menu Editar, clique em Office Clipboard.

    O painel de tarefas Área de transferência é exibido.

  6. Certifique-se a lista filtrada ainda está selecionado e, em seguida, clique no botão Cópia.

    A lista filtrada é realçada com delimitadora contornos e as aparece seleção como um item na parte superior da área de transferência.

  7. No menu dados, aponte para Filtrar e clique em Mostrar tudo.

    A lista original foi re-exibido.

  8. Pressione a tecla DELETE.

    A lista original é apagado.

  9. Na área de transferência, clique no item da lista filtrada.

    A lista filtrada aparece no mesmo local que a lista original.

As versões recentes do Excel (2003 é o que usamos aqui) pode usar um formato XML, xlsx. Um arquivo XLSX é um zip de um arquivo XML. Se você quiser fazer um arquivo que será aberto no Excel com as configurações desejadas, tente o seguinte: primeiro criar um arquivo de modelo com o agrupamento que você quiser. Salve-o como xlsx. Descompacte o arquivo usando seu software zip padrão. Dê uma olhada no que está dentro. Eu não tenho trabalhado com agrupamento especificamente, mas todos os comandos em sua planilha estará lá em forma xml, você precisa descobrir onde o grupo está definido. Então é uma questão de fazer as alterações apropriadas para o xml e re-fechando. Um pouco de esforço, mas você pode usar este método para criar programaticamente arquivos que são de pré-agrupadas. Pode haver bibliotecas Perl especificamente voltadas para isso, eu não sei.

Um arquivo CSV é também muito fácil de gerar. OpenOffice permite que você escolha como analisar as coisas, mas o Excel excepts colunas delimitado por vírgulas (sem qualquer tipo de citação) e CRLF delimitado linhas.

A1,A2,A3
B1,B2,B3

etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top