Como posso dividir facilmente um CSV em duas planilhas do Excel com o PowerShell? [fechadas]

4

Recentemente descobri que o PowerShell pode ser usado para escrever documentos do Excel. O primeiro uso que pensei para isso foi (pelo menos parcialmente) automatizar a análise de alguns relatórios de CSV com os quais eu tenho que trabalhar regularmente.

O trabalho básico que preciso fazer é algo assim:

  1. Crie uma pasta de trabalho do Excel com duas planilhas.
  2. Copie os cabeçalhos das colunas do arquivo CSV para a Linha 1 nas duas folhas.
  3. Para cada linha no CSV que atende a uma determinada condição (por exemplo, o valor na coluna R é igual a "Não coloque na Folha 1"), anexe a linha à planilha 2 do Excel.
  4. Cada linha no CSV que não é destinada para a planilha 2 do Excel deve ser anexada à planilha 1 do Excel.

O passo 1 é bastante simples - encontrei vários guias online para me ajudar a começar por lá. Eu também estou confiante de que posso lidar com a lógica condicional necessária para as etapas 3 & 4 por conta própria, com base na experiência anterior do PowerShell. O problema que estou tendo dificuldade em encontrar uma solução é gravar todos os dados nas planilhas.

Ainda não escrevi nenhum script do PowerShell para geração de Excel, mas cada guia que vi parece incluir apenas instruções para escrever células individuais - não linhas inteiras de uma só vez. Existe uma maneira mais fácil de fazer isso?

Algumas coisas em que eu estaria interessado, se elas existirem:

  • Alguns meios de copiar uma linha inteira de um arquivo CSV para uma planilha do Excel sem precisar percorrer as células individuais na linha.
  • Uma maneira de copiar uma linha inteira de um arquivo CSV para outro sem ter que percorrer células individuais, além de um comando (ou um script razoavelmente curto) para importar um arquivo CSV inteiro para uma planilha do Excel.
  • Último recurso: Um loop for (ou bloco de script similarmente curto) a ser usado no lugar de um método write-whole-row. Isso deve ser capaz de determinar onde parar de copiar as células em uma linha sem ter que ir até a última coluna (acho que é o XFD atualmente), enquanto manipula as células vazias no meio de uma linha.

Além de descobrir o que foi dito acima, a parte mais difícil do meu script é garantir que ele funcione eficientemente em arquivos CSV de origem que podem ser milhares (possivelmente dezenas de milhares) de linhas longo.

O script final precisará ser compatível com o Windows 7, o PowerShell 2.0 e o Excel 2010.

    
por Iszi 07.09.2013 / 06:55

0 respostas