Partage
  • Partager sur Facebook
  • Partager sur Twitter

une méthode java de fusion

fusionner deux fichiers csv

Sujet résolu
21 mai 2015 à 16:10:15

salut, svp est il possible de fusionner deux fichiers csv qui ont la même structure dans un seul fichier d'une manière automatique en utilisant java ?

et merci

  • Partager sur Facebook
  • Partager sur Twitter
21 mai 2015 à 16:36:58

Hmmm c'est à dire mettre l'un à la suite de l'autre?

-
Edité par Triterium 21 mai 2015 à 16:37:12

  • Partager sur Facebook
  • Partager sur Twitter
21 mai 2015 à 17:15:54

Pour les mettre les uns à la suite de l'autre, il faut utiliser les objets InputStream pour lire dans un des fichiers et l'objet OutputStream pour ecrire ce que tu reçois de ce fichier dans l'autre. Donc oui, c'est possible, il te reste à te renseigner et trouver des exemples de l'utilisation de ces objets. (+1 si ça t'aide)
  • Partager sur Facebook
  • Partager sur Twitter
24 mai 2015 à 14:20:57

oui mais les deux résultats que je dois les mettre dans un fichier CSV !!! sont sous forme de tableaux de même structure !!! le problème c'est que je ne veux pas que les noms des colonnes se répètent : par exemple

le 1èr résultat est :

le 2ème résultat est :

et que après la fusion je dois obtenir :

et pas ça :

-
Edité par Driss EL ALAOUI 24 mai 2015 à 14:21:21

  • Partager sur Facebook
  • Partager sur Twitter
24 mai 2015 à 23:21:05

Hmmm, ça existe peut être mais je dois dire que j'ai jamais eu besoin de ça!

Après, les fichiers au format csv c'est pas bien compliqué à traiter soit même, donc au pire si tu ne trouves pas la biblio qui va bien, tu as juste à supprimer la première ligne du 2è fichier.

  • Partager sur Facebook
  • Partager sur Twitter
25 mai 2015 à 20:18:17

Bonsoir.

Pas d'existant à ma connaissance.

En Java tu pourras te pencher sur OpenCSV pour lire les CSV.
Tu pourras facilement dire s'il y a une entête dans ton fichier.

Mais si tes tableaux ont la même structure, inutile de t'embêter avec la contrainte "CSV" : il s'agira simplement de copier un fichier dans un autre, en ignorant la 1ère ligne.

J'ai déjà eu cette problématique, je l'ai résolu par un script Python de quelques lignes.
J'avais même trouvé un script MS-DOS pour le faire, mais moins joli.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import re

header = False
offset = 1 if header else 0

folder = 'C:/Users/toto/fichiers'

with open('C:/Users/toto/merged.csv', 'w') as outputFile:
	if header:
		print 'Writing header'
		with open(os.path.join(folder, os.listdir(folder)[0])) as headerFile:
			outputFile.writelines(headerFile.readline())
	
	for filename in os.listdir(folder):
		file = os.path.join(folder, filename)
		print 'Writing ' + file
		with open(file) as inputFile:
			lines = inputFile.readlines()[offset:]
			outputFile.writelines(lines)
			if not re.match('.*(\r)?\n$', lines[-1]): outputFile.write('\n')
  • Partager sur Facebook
  • Partager sur Twitter
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
26 mai 2015 à 12:33:26

merci beaucoup Pinguet62 mais comment on peut faire ça en java ?

apparemment Python est plus riche au niveau de traitement de fichier CSV que java !!! n'est ce pas ?

  • Partager sur Facebook
  • Partager sur Twitter
26 mai 2015 à 12:45:08

Python permet de faire des scripts facilement (sans avoir à lancer l'IDE, compiler, ...) et développer rapidement (-50% de code source).

Mais tu peux très bien le faire en Java.
Exemple simple à adapter à tes besoins (à tester) :

try (PrintWriter out = new PrintWriter(new BufferedWriter(
        new FileWriter("merged.csv", true)))) {
    for (String path : Arrays.asList("file1.csv", "file2.csv"))
        Files.lines(Paths.get(path)).skip(1).forEach(out::println);
} catch (IOException e) {
    e.printStackTrace();
}
  • Partager sur Facebook
  • Partager sur Twitter
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
26 mai 2015 à 14:56:47

merci beaucoup Pinguet62 !!! tu m'as beaucoup aidé :)
  • Partager sur Facebook
  • Partager sur Twitter
3 août 2018 à 0:02:59

salut jai une problem comme Driss EL ALAOUI ms cette il y a beaucoup d'information dans lexel et comment je pourrais transférer CSV au java s'il te plais i need ur helps c urgent
  • Partager sur Facebook
  • Partager sur Twitter
3 août 2018 à 4:12:44

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet.

  • Partager sur Facebook
  • Partager sur Twitter