Il n'est pas si difficile de produire du CSV, mais il y a des spécifications, et si vous sortez sans le savoir, vous pouvez vous retrouver avec quelque chose qui ignore les spécifications. Ou plutôt, j'ai essayé quelque chose de proche. Vous pouvez vérifier les spécifications elles-mêmes dans wiki ou Official Specifications. Java publie une bibliothèque pour Apache pour lire et écrire CSV, j'ai donc résumé la sortie en utilisant ceci. Ne lis pas.
http://commons.apache.org/proper/commons-csv/
Javadoc http://commons.apache.org/proper/commons-csv/apidocs/index.html
https://mvnrepository.com/artifact/org.apache.commons/commons-csv Lorsque vous utilisez Maven ou Gradle, vous pouvez obtenir groupId etc. en vous référant à ce qui précède. Pour le moment, le fonctionnaire a publié Lien de téléchargement, vous devriez donc pouvoir le télécharger et l'exécuter à partir d'ici (non confirmé) ..
Exemple simple est décrit dans CSVPrinter de Javadoc.
Exemple de description
try (CSVPrinter printer = new CSVPrinter(new FileWriter("csv.txt"), CSVFormat.EXCEL)) {
printer.printRecord("id", "userName", "firstName", "lastName", "birthday");
printer.printRecord(1, "john73", "John", "Doe", LocalDate.of(1973, 9, 15));
printer.println();
printer.printRecord(2, "mary", "Mary", "Meyer", LocalDate.of(1985, 3, 29));
} catch (IOException ex) {
ex.printStackTrace();
}
Exemple de sortie
id,userName,firstName,lastName,birthday
1,john73,John,Doe,1973-09-15
2,mary,Mary,Meyer,1985-03-29
Explication ci-dessous.
CSVPrinter printer = new CSVPrinter(new FileWriter("csv.txt"), CSVFormat.EXCEL)
CSVPrinter
est une instance de sortie CSV. CSVFormat.EXCEL
est le format de sortie CSV. DEFAULT basé sur la RFC4180 (mais il y a quelques différences ) Et EXCEL selon les spécifications du fichier EXCEL. Je pense qu'il y a beaucoup d'autres choses, alors vérifiez Official Javadoc Bon à voir.
Vous pouvez voir la différence entre eux en vérifiant Javadoc, mais certains paramètres ne sont liés qu'à la lecture de CSV.
printer.printRecord("id", "userName", "firstName", "lastName", "birthday");
printer.printRecord(1, "john73", "John", "Doe", LocalDate.of(1973, 9, 15));
printer.println();
printer.printRecord(2, "mary", "Mary", "Meyer", LocalDate.of(1985, 3, 29));
Une ligne de données est sortie par printRecord
. Puisque l'argument est ʻObject, il peut recevoir d'autres chaînes que des chaînes de caractères. Rompre la ligne avec
println. Si la valeur contient un délimiteur, elle sera sortie selon le format (si
CSVFormat.EXCEL est utilisé, la valeur sera affichée entourée de
" `).
Séparateur en valeur
printer.printRecord("te,st", "tester");
Exemple de sortie lorsque la valeur a un délimiteur
"te,st",tester
En utilisant la méthode d'impression, 1 Il est possible de sortir non pas pour chaque enregistrement mais pour chaque valeur. Si vous l'exécutez en continu, il insérera automatiquement un délimiteur, mais même si vous essayez de l'utiliser en même temps que la méthode printRecord
sur la même ligne, il n'insérera pas de délimiteur.
Utilisation combinée d'impression et d'impression
printer.print("test1");
printer.print("test2");
printer.printRecord("test3", "test4");
production
test1,test2test3,test4
Méthode PrintComment qui renvoie d'autres commentaires [Méthode PrintRecords] qui génère plusieurs lignes au lieu d'un seul enregistrement (http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVPrinter.html#printRecords-java.lang .Object ...-) Quelque chose (printRecords
est ResultSet Peut être considéré comme un argument), il est donc préférable de l'utiliser correctement au besoin.
Selon la façon dont vous utilisez CSVFormat
, vous pouvez modifier le format CSV à l'avance. Dans l'exemple ci-dessous, une ligne d'en-tête est ajoutée à l'avance et le délimiteur est remplacé par un caractère de tabulation.
Correction du format CSV
CSVPrinter printer =
CSVFormat.DEFAULT.withHeader("En-tête 1", "En-tête 2", "En-tête 3").withDelimiter('\t').print(writer);
printer.printRecord("a", "b", "c");
Exemple de sortie
En-tête 1 En-tête 2 En-tête 3
a b c
La ligne d'en-tête est ajoutée par la méthode withHeader
et le délimiteur est modifié par la méthode withDelimiter
. La dernière méthode print
est pour obtenir une instance de CSVPrinter
.
Comme il y a diverses autres choses, vous pourrez changer le format du CSV que vous créez en les utilisant, mais il semble que la création d'un CSV que vous ne comprenez pas n'empêchera pas qu'il soit lu comme un CSV par d'autres applications. je veux
Je veux gérer CSV avec des fonctions standard.
Recommended Posts