Converta um arquivo CSV para um arquivo XLS na linha de comando do linux? [fechadas]

4

Estou usando o Debian Linux e quero converter um arquivo CSV em um arquivo de planilha Excel XLS. O pacote catdoc inclui o comando xls2csv que converte de XLS para CSV. No entanto, não faz o contrário.

Como eu tenho apenas um arquivo CSV, não me importo com formatação ou algo assim. Eu não estou preocupado se ele gera apenas um arquivo XLS muito simples, e não suporta as novas versões extravagantes. Contanto que seja uma planilha XLS.

    
por Rory 13.10.2009 / 13:58

9 respostas

10

Por que você quer fazer isso? Como você não está interessado em adicionar ou modificar dados / metadados, você pode simplesmente deixá-lo como csv. CSV é associado com o MS Excel por padrão, então quem vai abri-lo, vai obtê-lo aberto no MS Excel.

Se isso não funcionar para você por algum motivo, lembre-se de que, até onde eu sei, você pode gerar um (tipo de) arquivo xls válido usando o seguinte esqueleto:

<table>
<tr>
  <td>field0</td>
  <td>field1</td>
  ..
  <td>fieldX</td>
</tr>
... ad inf
</table>

(estou falando sério)

    
por 13.10.2009 / 14:17
9

Tente usar a ferramenta ssconvert do pacote "gnumeric". No Debian, instale o pacote com sudo apt-get install gnumeric e, a partir da linha de comando, execute:

ssconvert file.csv file.xls

Isso deve fazer o trabalho.

    
por 27.09.2012 / 11:01
6

Existe uma solução baseada em python no Sourceforge chamada csv2xls que pode se encaixar no projeto.

Ele não parece ser mantido no momento (a última atividade foi há mais de um ano), mas se ele faz o que você precisa, então isso não deve importar muito.

    
por 13.10.2009 / 14:13
1

Tente usar uma macro do Openoffice ...

Veja para começar: Como converter o Word - > PDF na linha de comando link

por 08.03.2011 / 18:59
1

Existem alguns problemas com os filtros do CSV e de qualquer formato XLS ou mesmo do OpenOffice. Como o: Separador de registro: Terminador de linha: \ n ou; Definição de cadeia: " ou algo parecido.

Se eu entendi corretamente, você quer fazê-lo na linha de comando dentro de alguns scripts. Este é exatamente o mesmo problema que tenho agora: do DATA no formato csv, apresentá-lo ao cliente no formato XLS.

Encontrei esta postagem: link

Mas eu não estou totalmente satisfeito. Eles podem ser uma opção.

Na verdade, se você tiver algum tipo de openOffice instalado, pode tentar jogar com algumas informações de: link

Na minha concha eu digitei:

soffice --help

E parte da saída é:

--convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir] files
      Batch convert files.
      If -outdir is not specified then current working dir is used as output_dir.
      Eg. -convert-to pdf *.doc
          -convert-to pdf:writer_pdf_Export -outdir /home/user *.doc
    
por 04.10.2014 / 01:39
1

Eu escreveria um pequeno código para gerar diretamente uma versão simples do formato XML do Excel 2002: link

Planilha XML

Though the intended file extension for this format is .xml, the program also correctly handles XML files with .xls extension. This feature is widely used by third-party applications (e.g. MySQL Query Browser) to offer "export to Excel" capabilities without implementing binary file format. The following example will be correctly opened by Excel if saved either as Book1.xml or Book1.xls:

<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1" x:FullRows="1">
   <Row>
    <Cell><Data ss:Type="String">Name</Data></Cell>
    <Cell><Data ss:Type="String">Example</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">Value</Data></Cell>
    <Cell><Data ss:Type="Number">123</Data></Cell>
   </Row>
  </Table>
 </Worksheet>
</Workbook>

Como alternativa, se isso não fornecesse recursos suficientes, eu implementaria diretamente a saída mínima .xlsx. É um arquivo zip com arquivos XML que deve ser tratável em comparação com os formatos binários antigos.

    
por 04.12.2014 / 21:14
1

Existe um software chamado csv2xls (escrito em C ++), que deve fazer exatamente o que você quer (não confundir com a implementação do Python2 mencionada em outra resposta).

link

O último commit foi há 2 meses e, aparentemente, o software parece estável.

    
por 17.04.2015 / 11:35
0

Eu diria que um arquivo .CSV já é um arquivo do Excel com os recursos que você deseja. Há apenas um um aborrecimento para evitar e está tudo pronto . Se você realmente quiser convertê-lo em .XLS, faça com que o Excel o faça mais tarde. Mas realmente não há necessidade de fazê-lo, dada a descrição que você fornece.

    
por 08.03.2011 / 19:10
-1

Há efetivamente uma necessidade de converter CSV para o Excel, quando você está enviando arquivos para usuários que não desejam converter arquivos CSV para o Excel. Há também o caminho dentro do Excel para abrir um arquivo CSV e salvá-lo em um arquivo formatado do Excel. Mas queremos evitar essa etapa extra para os usuários. Descobri, para minha frustração, que, além dos scripts do PowerShell, não há produto confiável no mercado para fazer a conversão a partir de uma linha de comando, respeitando os separadores de coluna, os cabeçalhos, os cabeçalhos e os parâmetros que talvez você queira adicionar.

    
por 17.04.2015 / 11:03