Dividir 1 archivo en formato CSV en varios archivos CSV
ResueltoHola,
Quiero dividir 1 archivo de varias líneas (30 000, por ejemplo) en varios archivos de 300 líneas más o menos.
(archivo en formato csv)
En VBA, si es posible: (un ejemplo de lo que deseo)
por favor, seleccione el archivo a dividir.
¿Cuántas líneas desea por archivo?
Una vez respondidas las 2 preguntas, la división debe hacerse manteniendo el formato en cada columna (por ejemplo columna A = formato Texto).....
La primera fila (encabezado de columna) será la misma para todos los archivos.
¡Gracias de antemano por su ayuda! No he encontrado una solución en la red.....
Salud
6 respuestas
-
Hola,
Entonces cada recorte se guarda como un nuevo archivo cvs.... ¿Sí / No?
Gracias por proporcionar al menos 5 a 10 líneas del archivo para dividir!
Para adjuntar el archivo vía https://www.cjoint.com/
seguir las instrucciones y pegar el enlace en una nueva publicación.
Saludos.
Le Pingou-
Hola Le Pingou,
Sí, para cada corte se desea un nombre diferente
Para example, el archivo a dividir se llama MTT.csv
El resultado será:
MTT01.CSV
MTT02.CSV
MTT03.CSV .......etc
https://www.cjoint.com/c/LIfo2GzKsdV
Saludos
-
-
Moderador
Hola,
7zip permite dividir un archivo, en 7zip, en la lista de archivos, clic derecho dividir en, según el tamaño, no sé si respeta los saltos de línea.
O un pequeño batch línea de comando: https://www.developpez.net/forums/d1502877/general-developpement/programmation-systeme/windows/scripts-batch/diviser-fichier-texte-sous-windows/#post8153273
fácilmente adaptable para crear una primera fila con los títulos de las columnas.
-
Moderador
El script funciona, solo tenía un error de contador de línea en el 1 archivo
@echo off setLocal EnableDelayedExpansion set limit=10000 set file=splitA.txt set lineCounter=1 set filenameCounter=1 set name= set extension= for %%a in (%file%) do ( set "name=%%~na" set "extension=%%~xa" ) set splitFile=!name!!filenameCounter!!extension! for /f "tokens=*" %%a in (%file%) do ( if !lineCounter! geq !limit! ( set /a filenameCounter=!filenameCounter! + 1 set splitFile=!name!!filenameCounter!!extension! echo Nouveau fichier !splitFile! set lineCounter=0 ) echo %%a>> !splitFile! set /a lineCounter=!lineCounter! + 1 ) pause
sinon il faudrait nous donner un fichier exemple.
Pour 7zip, il faut lancer 7zip d'abord, et dans 7zip, parcourir les fichiers + clic-droit.
-
Moderador
Duplicando el primer registro que contiene el nombre de las columnas en cada archivo
@echo off setLocal EnableDelayedExpansion set limit=2 set file=splitcsv.csv set lineCounter=0 set filenameCounter=1 set name= set extension= for %%a in (%file%) do ( set "name=%%~na" set "extension=%%~xa" ) set col= set splitFile=!name!!filenameCounter!!extension! for /f "tokens=*" %%a in (%file%) do ( if "!col!" == "" ( set col=%%a ) if !lineCounter! gtr !limit! ( set /a filenameCounter=!filenameCounter! + 1 set splitFile=!name!!filenameCounter!!extension! echo !col! > !splitFile! echo Nouveau fichier !splitFile! set lineCounter=1 ) echo %%a>>!splitFile! set /a lineCounter=!lineCounter! + 1 ) pause
-
Hola,
Bueno, no voy a encontrar algo mejor, dejo el puesto.
Saludos.
El Pingüino -
Hola,
Gracias, pee pee, por esta solución (*.bat) que funciona muy bien!
Y gracias a Le Pingou por tu participación!
¡Que tengas un buen día!