txt separado punto por para delimitado convertir configurar como comas coma columnas archivos archivo abrir excel scripting csv

punto - convertir un archivo de Excel(xls) en un archivo separado por comas(csv) sin la GUI



convertir excel a csv separado por punto y coma (13)

@ John Machin: No puedo agregar comentarios como nuevo para este foro :)

No utilicé el viejo paquete pyXLreader, pero tengo en mente mi publicación con xlrd ;)

Lo vi hace un mes pero no lo usé en proyectos.

WBR

¿Existe una forma simple de traducir un XLS a un archivo con formato CSV sin iniciar la aplicación con ventana de Excel?

Necesito procesar algunos libros de Excel XLS con scripts. Para esto necesito convertir el archivo xls en un archivo csv. Esto se puede hacer con un save-as desde la aplicación de Excel. Pero, me gustaría automatizar esto (por lo tanto, no abra la ventana de la aplicación de Excel).

Será suficiente si la primera hoja del libro de trabajo se traduce al formato CSV. Necesito solo procesar los datos en esa hoja.

Tengo Cygwin y Excel instalados en mi sistema, si eso ayuda.

Editar: Ok, tengo una solución de trabajo con Perl. Actualización para uso futuro de otros.

Instalé el módulo Spreadsheet :: ParseExcel . y luego read-excel.pl muestra read-excel.pl .

Mi código es una pequeña variación de este código de muestra, como se muestra a continuación.

#!/usr/bin/perl -w # For each tab (worksheet) in a file (workbook), # spit out columns separated by ",", # and rows separated by c/r. use Spreadsheet::ParseExcel; use strict; my $filename = shift || "Book1.xls"; my $e = new Spreadsheet::ParseExcel; my $eBook = $e->Parse($filename); my $sheets = $eBook->{SheetCount}; my ($eSheet, $sheetName); foreach my $sheet (0 .. $sheets - 1) { $eSheet = $eBook->{Worksheet}[$sheet]; $sheetName = $eSheet->{Name}; print "#Worksheet $sheet: $sheetName/n"; next unless (exists ($eSheet->{MaxRow}) and (exists ($eSheet->{MaxCol}))); foreach my $row ($eSheet->{MinRow} .. $eSheet->{MaxRow}) { foreach my $column ($eSheet->{MinCol} .. $eSheet->{MaxCol}) { if (defined $eSheet->{Cells}[$row][$column]) { print $eSheet->{Cells}[$row][$column]->Value . ","; } else { print ","; } } print "/n"; } }

Actualización : Aquí hay una secuencia de comandos de Powershell con la que también podría ser fácil trabajar; como está desde este blog de MSDN y, Referencia de SO .

$excel = New-Object -comobject Excel.Application $workbooks = $excel.Workbooks.Open("C:/test.xlsx") $worksheets = $workbooks.Worksheets $worksheet = $worksheets.Item(1) $range = $worksheet.UsedRange foreach($row in $range.Rows) { foreach($col in $row.Columns) { echo $col.Text } }

Actualización: Recientemente encontré una herramienta de Windows CSVed en esta respuesta de Superusuario que podría ser útil para algunas personas.


De los documentos de Gnumeric :

Gnumeric puede convertir archivos automáticamente sin necesidad de la intervención del usuario. Esto permite convertir una gran cantidad de archivos usando un script. Gnumeric se distribuye junto con un programa llamado ssconvert que es el programa utilizado para convertir archivos automáticamente. Todos los formatos de archivo admitidos por Gnumeric se pueden usar, excepto los formatos Postscript y PDF que operan a través del sistema de impresión.

Esta aplicación se utiliza, desde la línea de comandos, al especificar, cualquier opción deseada, un archivo de entrada y un archivo de salida. Por ejemplo,

ssconvert myfile.xls myfile.gnumeric

convertiría un archivo de formato Excel en un archivo de formato Gnumeric.

Los formatos de archivos de importación y exportación disponibles que ssconvert pueden leer se pueden enumerar usando

ssconvert --list-importers

o

ssconvert --list-exporters

respectivamente.

Al igual que otras aplicaciones de línea de comandos de GNU, ssconvert incluye una página de manual. Se puede acceder a esta página escribiendo:

man ssconvert

que abrirá la página del manual. Esta página puede navegarse escribiendo la barra espaciadora o usando los botones Re Pág y Av Pág. El programa man se puede descartar escribiendo la tecla q.

Lo estoy usando y funciona bien.


En el mundo de Java puedes usar apache poi. Puede comenzar con el siguiente fragmento de Groovy.

FileInputStream fis = new FileInputStream(filename); Workbook wb = new HSSFWorkbook(fis); Sheet sheet = wb.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { doSomething(cell.toString()) } }


Excel se puede utilizar como fuente de datos y hay controladores disponibles para acceder a EXCEL como base de datos.

1.) Cree y abra una conexión al archivo EXCEL, que desea convertir en CSV.

2.) Inicie una consulta como "SELECT * From Sheet1", que cargará todos los datos de Sheet1 en recordset o datatable.

3.) Como uso .net, puedo guardar esos registros en datatable y convertirlos a CSV usando el siguiente método de extensión.

public static string ToCSV(this DataTable _dataTable) { StringBuilder csv = new StringBuilder(); StringWriter sw = new StringWriter(csv); int icolcount = _dataTable.Columns.Count; for (int i = 0; i < icolcount; i++) { sw.Write(_dataTable.Columns[i]); if (i < icolcount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); foreach (DataRow drow in _dataTable.Rows) { for (int i = 0; i < icolcount; i++) { if (!Convert.IsDBNull(drow[i])) { sw.Write(drow[i].ToString()); } if (i < icolcount - 1) { sw.Write(","); } } sw.Write(sw.NewLine); } sw.Close(); return csv.ToString(); }

Puede aplicar este enfoque en la plataforma en la que está trabajando.

Gracias.


Puede hacerlo con Alacon - utilidad de línea de comandos para la base de datos Alasql .

Funciona con Node.js, por lo que necesita instalar Node.js y luego el paquete de Alasql :

> npm install alasql

Para convertir un archivo Excel a CVS (ot TSV) puede ingresar:

> node alacon "SELECT * INTO CSV(''mydata.csv'', {headers:true}) FROM XLS(''mydata.xls'', {headers:true})"

Alacon admite otro tipo de conversiones (CSV, TSV, TXT, XLSX, XLS) y construcciones de lenguaje SQL (consulte el Manual de usuario para ver ejemplos).


Puedes usar xls2csv del paquete catdoc si estás en Debian / Ubuntu


Recomiende Convert XLS: http://www.softinterface.com/Convert-XLS%5CConvert-XLS.htm

''Convert XLS'' es una herramienta de conversión de Excel fácil de utilizar y sofisticada, diseñada específicamente para archivos Excel, texto y CSV (caracteres / delimitados por comas). Si necesita convertir / manipular uno o miles de archivos, ubicados en una o varias carpetas, ¡esta es la herramienta! Las conversiones se pueden hacer 10-15 veces más rápido sin MS Excel.

Automatice sus tareas de conversión de Excel utilizando:

  • Programador incorporado
  • La línea de comando
  • interfaz COM interfaz

Script VBS y funciona increíble http://www.go4expert.com/forums/showthread.php?t=18188

Establecer objArgs = WScript.Arguments para I = 0 a objArgs.Count - 1

FullName = objArgs(I) FileName = Left(objArgs(I), InstrRev(objArgs(I), ".") ) Set objExcel = CreateObject("Excel.application") set objExcelBook = objExcel.Workbooks.Open(FullName) objExcel.application.visible=false objExcel.application.displayalerts=false objExcelBook.SaveAs FileName & "csv", 23 objExcel.Application.Quit objExcel.Quit Set objExcel = Nothing set objExcelBook = Nothing

Siguiente


Si tiene Cygwin, lo más probable es que tenga Python. Si no, instale Python y use este script . Es mucho más de lo que necesita, pero se convertirá fácil y rápido.


Soy bastante nuevo en estos foros, y sería bueno si ponen el año en las marcas de tiempo (por así decirlo), así que sé cuántos años tienen las publicaciones. Voy a suponer que son de 2009.

pero una buena solución en python es usar xlrd para leer en tus archivos xls. aquí hay un tutorial de introducción bastante sencillo: http://scienceoss.com/read-excel-files-from-python/ no es mío.

el único problema que tuve fue fechas de excelencia. aquí hay una solución rápida para ellos:

date = xlrd.xldate_as_tuple (int (sheet.cell (rowNum, colNum) .value), workBookName.datemode)

que crear un archivo csv con el módulo csv incorporado, ya que iam un nuevo usuario solo puedo publicar un hipervínculo. pero google el api del módulo csv.

espero que haya sido útil


Use una de las bibliotecas portátiles [Python]:

pyxlreader.sourceforge.net/

sourceforge.net/projects/pyexcelerator

y crea una capa adicional de scripts encima.


Use una secuencia de comandos de Perl. Utilizar el módulo Spreadsheet :: ParseExcel perl de CPAN para analizar el archivo xls seguido de la salida como csv debería funcionar bien.

http://search.cpan.org/dist/Spreadsheet-ParseExcel

También podría intentar usar VBScript.


mi solución:

use Spreadsheet::BasicRead; my $xls = ''file.xls''; my $csv = ''file.csv''; my $ss = new Spreadsheet::BasicRead($xls) or die "Could not open ''$xls'': $!"; my $name = ''''; my $row = 0; open(FILE, ">$csv") or die "Could not open : $!/n"; flock(FILE, 2) or die "Could not lock file/n"; while (my $data = $ss->getNextRow()){ $row++; $name = join('';'',@$data); print FILE $name."/n" if ($name ne ""); } flock(FILE, 8); close FILE;