Guillemets doubles indésirables dans le fichier csv généré
J'ai créé un fichier CSV en utilisant le code Java ci-dessous:
String csv = rs.getString("UPLOAD_FOLDER_PATH")+".csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
String [] filevalues = new String[filevaluesarray.size()];
filevalues=filevaluesarray.toArray(filevalues);
writer.writeNext(filevalues);
writer.close();
J'obtiens le fichier CSV, mais le contenu du fichier a non désirée entre des guillemets doubles.
Par exemple. "ABC","123","KDNJ"
Je ne comprends pas d'où ces guillemets sont ajoutés.
source d'informationauteur Edward
Vous devez vous connecter pour publier un commentaire.
Cela a fonctionné pour moi
Voir le CSVWriter javadoc
Vous devriez probablement vous préciser ce que vous entendez par " les " guillemets.
Je ne veux pas qu'il cite toutseuls les champs qui contiennent des
incorporé des virgules, des guillemets et des retours à la ligne (en citant tout ce qui est inutile et
rend mes fichiers plus gros), ou
Je ne veux pas tout cité, et je comprends que mon CSV sera invalide si elle contient des virgules, des guillemets et des retours à la ligne
Si c'est la première option, puis opencsv ne prend pas en charge ce soit des citations de tout ou rien. Jetez un oeil à Super CSV si vous voulez un open source CSV bibliothèque que seuls les guillemets lorsque c'est nécessaire (et peut devis toutsi nécessaire).
Si c'est la deuxième option, puis aller avec Sheldon réponse, mais juste être conscient de votre CSV sera invalide si elle contient des virgules, des guillemets et des retours à la ligne.
Par exemple, si je suis en train de lire votre fichier CSV, comment suis-je censé savoir que ce qui suit n'est en fait qu'un seul enregistrement avec 2 champs?
Alors que si il a été cité correctement, évidente, c'est à dire
Pour info, voici les règles relatives aux citations de RFC4180 (le MIME de la définition de type pour CSV).
private void writeFile(String fileAbsolutePath , ListcsvLines) throws IOException{
Appel : writeFile(fileAbsolutePath,csvLinesList);
Exemple de travail pour Shamis réponse ,Il fonctionne très bien pour moi.
Si vous ne voulez pas les guillemets dans les valeurs du fichier CSV généré, vous devez créer la CSVWriter objet de cette façon:
La clé est
CSVWriter.NO_QUOTE_CHARACTER
. Vous pouvez personnaliser les valeurs des autres paramètres du constructeur.J'ai aussi le même problème avec open csv et pour résoudre le problème je utiliser le caractère d'échappement.
ex:
Ici ouvrir csv par défaut d'utiliser des guillemets comme caractère_échappement(à ma connaissance)
Dans mon cas, j'utilise le séparateur de tuyaux signe (|)
A2|G|Thilina|9022V|1|2|3|4|"Rubasingha"| "Abc|MATARA"| " Non " |2012|1668.88
Ici "Rubasingha" d'ouvrir et de fermer les guillemets et en " Non " également d'ouvrir et de fermer les guillemets simples. ces deux fonctionnent parfaitement dans l'ouverture par défaut csv
mais lorsque nous utilisons 'Abc seule ouvrez les guillemets simples - ce aussi beau travail
mais MATARA" OU "MATARA - ici, nous avons un double quote - dans mon cas, cette générer une erreur lors de la lecture du fichier CSV à l'aide de open csv
pour résoudre le problème j'ai la référence de cette page (http://cs.swan.ac.uk/~csbob/enseignement/java/JavaDemoNetbeans/opencsv-2.3/doc/)
Il y a des constructeurs qui s'adressent pour la fourniture de votre propre séparateur et des guillemets. Dire que vous êtes à l'aide d'un onglet de votre séparateur, vous pouvez faire quelque chose comme ceci:
Et si vous avez des simples guillemets vos caractères d'échappement plutôt que de doubler les citer, vous pouvez utiliser les trois arg constructeur:
Vous pouvez également ignorer les premières lignes du fichier si vous savez que le contenu ne démarre pas jusqu'à plus tard dans le fichier. Ainsi, par exemple, vous pouvez sauter les deux premières lignes en faisant:
j'ai donc changer la par défaut de mon caractère d'échappement (^) signe sans l'aide de guillemets doubles comme caractère d'échappement.
C'est la façon dont je résoudre le problème. Grâce