GNU/Linux >> Tutoriales Linux >  >> Linux

¿Convertir un archivo .xlsx (ms Excel) a .csv en la línea de comando con campos separados por punto y coma?

Me doy cuenta de que esto no una pregunta completamente relacionada con Unix/Linux. Pero como esto es algo que haré en Linux, espero que alguien tenga una respuesta.

Tengo un archivo de Excel en línea (.xlsx ) que se actualiza periódicamente (por otra persona). Quiero escribir un script y ponerlo como un cronjob para procesar esa hoja de Excel. Pero para hacer eso, necesito convertirlo en un archivo de texto (entonces un .csv ) con columnas separadas por punto y coma. Desafortunadamente, no se puede separar por comas ya que algunas columnas tienen comas. ¿Es posible hacer esta conversión desde Shell? Tengo Open Office instalado y puedo hacer esto usando su GUI, pero quiero saber si es posible hacerlo desde la línea de comandos. ¡Gracias!

PD:También tengo una máquina Mac, así que si alguna solución puede funcionar allí, también es bueno. 🙂

Respuesta aceptada:

OpenOffice viene con el programa unoconv para realizar conversiones de formato en la línea de comandos.

unoconv -f csv filename.xlsx

Para requisitos más complejos, puede analizar archivos XLSX con Spreadsheet::XLSX en Perl o openpyxl en Python. Por ejemplo, aquí hay una secuencia de comandos rápida para imprimir una hoja de trabajo como un archivo CSV separado por punto y coma (advertencia:no probado, escrito directamente en el navegador):

perl -MSpreadsheet::XLSX -e '
    $ = "n"; $, = ";";
    my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
    my $worksheet = ($workbook->worksheets())[0];
    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();
    for my $row ($row_min..$row_max) {
        print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
    }
' filename.xlsx >filename.csv

Linux
  1. Reduzca el tamaño del PDF con este truco de línea de comandos

  2. ¿Cómo convertir un archivo de Excel en un archivo Calc desde la línea de comandos?

  3. Un pequeño truco:seleccione un archivo o línea al azar en el archivo con shuf

  4. Importación de PostgreSQL CSV desde la línea de comando

  5. ¿Cómo reemplazar un archivo en jar con línea de comando en Linux?

Comando de cola de Linux con ejemplos

Comando WC de Linux con ejemplos

Convierta nombres de archivo a minúsculas a través de la línea de comandos de Ubuntu

Cómo enviar un correo electrónico con un archivo adjunto desde la línea de comandos

Cómo convertir xlsx a formato CSV en Linux

Uso del comando Linux mv con ejemplos