Prévenir opencsv de la rédaction des devis .fichier csv
Je suis remplissage d'un fichier à partir d'un jeu de résultats comme suit :
while(rs.next()){
String[] entries = new String[3];
entries[0] = rs.getString(1);
entries[1] = ",";
entries[2] = rs.getString(2);
println("entries : "+entries);
writer.writeNext(entries);
}
Quand j'ouvre le fichier excel les valeurs contiennent des guillemets autour d'eux. Donc, test1,test2,test3 lors de la lecture de la base de données et de l'écrit à un .fichier csv devient "test1","test2","test3"
Comment puis-je écrire le texte vers le fichier mais pas les guillemets ?
Lorsque j'imprime les entrées de la console, les guillemets ne sont pas imprimés, donc je ne sais pas où ils sont ajoutés ?
OriginalL'auteur blue-sky | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
Constructor
comme mentionné par @Matten et avec cela, utilisez de l'autre writeAll() deCSVWriter
.OpenCSV fournit également un soutien pour le vidage des données de la table SQL directement dans un fichier CSV. Pour cela, nous avons besoin de l'objet ResultSet. Suivant API peut être utilisé pour écrire des données au format CSV du jeu de résultats.
La
writeAll(ResultSet, boolean)
la méthode utilisée pour cela. Le premier argument est leResultSet
laquelle vous souhaitez écrire à CSV fichier. Et le deuxième argument estboolean
qui représente si vous voulez écrire l'en-tête des colonnes (noms de colonne de table) pour le fichier ou non.OriginalL'auteur SudoRahul
Juste pour s'étendre sur Matten réponse, utiliser les caractères dans le CSVWriter pour spécifier le
quotechar
. Donc, votre écrivain se présenterait comme suit:NO_QUOTE_CHARACTER
- t-il encore citer le cas de besoin? Si je comprends CSV correctement, les guillemets ne sont nécessaires que lors de mais les sauts de ligne, virgule, etc ... sont présents dans la chaîne. Cependant, OpenCSV ajoute toujours des guillemets, il n'est pas conforme et inutilisable. Est-ce à résoudre ce problème?Cette méthode devrait fonctionner si c'est la fin de la ligne:
public CSVWriter(Writer writer,char separator,char quotechar,String lineEnd)
. Vous pouvez trouver plus d'informations (ici)[opencsv.sourceforge.net/apidocs/au/com/bytecode/opencsv/.... J'étais juste en soulignant que vous pouvez utiliser le (champ constant des valeurs)[opencsv.sourceforge.net/apidocs/...Merci beaucoup!
excellent, Merci beaucoup
OriginalL'auteur obsessiveCookie
TL;DR Vous ne pouvez pas le faire avec OpenCSV v2.3. Mais vous pouvez le faire avec Communes CSV.
OpenCSV (v2.3) ne semblent pas fournir un moyen sûr de désactiver les guillemets quand ils ne sont pas nécessaires. Les guillemets ne sont généralement pas requis pour les valeurs qui n'ont pas le caractère de séparation ou de fin de ligne de caractère.
À l'aide de
NO_QUOTE_CHARACTER
comme certains l'ont suggéré:produit le incorrect CSV représentation:
Plus valide la représentation de ces données, qui utilise des citations seulement lorsque requis serait:
Je n'ai pas utilisé Communes CSV, mais il semble offrir cette possibilité via
QuoteMode.MINIMES
qui effectue les opérations suivantes:Le code dans ma réponse liée à OpenCSV, pour montrer comment il ne fournit pas la fonctionnalité requise.
OriginalL'auteur vegemite4me
Oui. Il y a un CSVWriter dans le même package que suit la même sémantique que le CSVReader. Par exemple, pour écrire un onglet séparé fichier:
Si vous préférez utiliser votre propre citation de caractères, vous pouvez utiliser les trois arg version du constructeur, qui prend un caractère de devis (ou n'hésitez pas à passer dans CSVWriter.NO_QUOTE_CHARACTER).
Vous pouvez également personnaliser les terminateurs de ligne utilisés dans le fichier généré (ce qui est bien pratique quand vous êtes à l'exportation à partir de votre Linux application web pour les clients Windows). Il y a un argument du constructeur pour ce but.
OriginalL'auteur Sahil Sancheti
La le code du constructeur de l'écrivain vous permet de donner un caractère d'échappement (
quotechar
):Si c'est le mauvais, il y a un autre constructeur avec les caractères d'échappement 🙂
OriginalL'auteur Matten
voir cette lien sur la façon d'utiliser NO_QUOTE_CHARACTER constructeur et le bon encodage lors de l'écriture dans un fichier:
https://stackoverflow.com/a/29362439/1454926
OriginalL'auteur user1454926