En Comma-Separated Values (CSV)-fil er bare en vanlig ren tekstfil, lagre data i kolonne for kolonne, og del den med en separator (f.eks. er det normalt et komma , ).
OpenCSV er et CSV-parserbibliotek for Java. OpenCSV støtter alle de grunnleggende CSV-type operasjonene du ønsker å gjøre. Java 7 er for øyeblikket den minste støttede versjonen for OpenCSV. Java-språket gir ingen innfødt støtte for effektiv håndtering av CSV-filer, så vi bruker OpenCSV for håndtering av CSV-filer i Java.
Slik bruker du OpenCSV
1. For maven-prosjektet kan du inkludere OpenCSV maven-avhengigheten i pom.xml-filen.
HTML
<>dependency>>> ><>groupId>>com.opencsvgroupId> |
onclick javascript
>
>
2. For Gradle Project kan du inkludere OpenCSV-avhengigheten.
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'>
3. Du kan laste ned OpenCSV Jar og inkludere i prosjektklassen din.
Noen nyttige klasser av opencsv
- CSVReader – Denne klassen gir operasjonene for å lese CSV-filen som en liste over String-array. CSVWriter – Denne klassen lar oss skrive dataene til en CSV-fil. CsvToBean – Denne klassen vil bli brukt når du vil fylle ut Java-bønner fra et CSV-filinnhold. BeanToCsv – Denne klassen hjelper til med å eksportere data til CSV-fil fra Java-applikasjonen din.
Leser CSV-fil
For å lese en CSV-fil trenger du CSVReader-klassen. Følgende er eksempel på CSV-fil som vi skal lese.
name, rollno, department, result, cgpa amar, 42, cse, pass, 8.6 rohini, 21, ece, fail, 3.2 aman, 23, cse, pass, 8.9 rahul, 45, ee, fail, 4.6 pratik, 65, cse, pass, 7.2 raunak, 23, me, pass, 9.1 suvam, 68, me, pass, 8.2>
Vi kan lese csv-filen på to måter:
1. Les data linje for linje : La oss se hvordan du leser CSV-fil linje for linje. For å lese data linje for linje, må vi først konstruere og initialisere CSVReader-objektet ved å sende filleserobjektet til CSV-filen. Etter det må vi kalle readNext()-metoden til CSVReader-objektet for å lese data linje for linje som vist i koden nedenfor.
Java
// Java code to illustrate reading a> // CSV file line by line> public> static> void> readDataLineByLine(String file)> {> > >try> {> > >// Create an object of filereader> >// class with CSV file as a parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvReader object passing> >// file reader as a parameter> >CSVReader csvReader =>new> CSVReader(filereader);> >String[] nextRecord;> > >// we are going to read data line by line> >while> ((nextRecord = csvReader.readNext()) !=>null>) {> >for> (String cell : nextRecord) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> }> |
>
>
2. Les alle data på en gang: Vi leser CSV-postene én etter én ved å bruke readNext()-metoden. CSVReader gir også en metode kalt readAll() for å lese alle postene samtidig inn i en liste.
List allData = csvReader.readAll();>
Når vi leser csv-fil som standard, ignoreres ikke header, som vist i utdata fra kodene ovenfor. Når vi trenger å hoppe over det første elementet i listen, kan vi spesifisere startlinjen mens vi lager CSVReader.
innstillingsmeny android
CSVReader csvReader = new CSVReaderBuilder(reader).withSkipLines(1).build();>
Kode:
Java
// Java code to illustrate reading a> // all data at once> public> static> void> readAllDataAtOnce(String file)> {> >try> {> >// Create an object of file reader> >// class with CSV file as a parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvReader object and skip first Line> >CSVReader csvReader =>new> CSVReaderBuilder(filereader)> >.withSkipLines(>1>)> >.build();> >List allData = csvReader.readAll();> > >// print Data> >for> (String[] row : allData) {> >for> (String cell : row) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> }> |
>
>
Leser CSV-fil med annen separator
CSV-filer kan separeres med et annet skilletegn enn komma, f.eks. semikolon, pipe osv. Følgende eksempel viser hvordan du leser data fra CSV-filen atskilt med et semikolontegn.
Eksempel på CSV-fil med semikolon :
name;rollno;department;result;cgpa amar;42;cse;pass;8.6 rohini;21;ece;fail;3.2 aman;23;cse;pass;8.9 rahul;45;ee;fail;4.6 pratik;65;cse;pass;7.2 raunak;23;me;pass;9.1 suvam;68;me;pass;8.2>
For Custom separator opprettes den første CSVParser med et spesifikt parsertegn.
CSVParser parser = new CSVParserBuilder().withSeparator(';').build();> Deretter vil vi lage CSVReader-objektet medCSVParser()-metoden sammen med konstruktøren og gitt det laget parserobjekt til parameteren for withCSVParser-metoden. Til slutt kaller byggemetoden for å bygge objektet.
CSVReader csvReader = new CSVReaderBuilder(filereader).withCSVParser(parser).build();>
Kode:
Java
// Java code to illustrate> // Reading CSV File with different separator> public> static> void> readDataFromCustomSeparator(String file)> {> >try> {> >// Create an object of file reader class with CSV file as a parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvParser object with> >// custom separator semi-colon> >CSVParser parser =>new> CSVParserBuilder().withSeparator(>';'>).build();> > >// create csvReader object with parameter> >// filereader and parser> >CSVReader csvReader =>new> CSVReaderBuilder(filereader)> >.withCSVParser(parser)> >.build();> > >// Read all data at once> >List allData = csvReader.readAll();> > >// Print Data.> >for> (String[] row : allData) {> >for> (String cell : row) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> }> |
>
>
Eksempel – Leser to csv-filer result.csv og results_semicolon_Separator.csv
result.csv har standardskilletegn ', ' men results_semicolon_Separator.csv har en skilletegn ';' i stedet for ', '.
Koder:
Java
// Java program to illustrate reading> // two CSV files> // with different separators> > import> java.io.FileReader;> import> java.util.List;> import> com.opencsv.*;> > public> class> ReadCSVData {> >private> static> final> String CSV_FILE_PATH> >=>'D:EclipseWorkSpaceCSVOperations
esults.csv'>;> >private> static> final> String CSV_FILE_CUSTOM_SEPARATOR> >=>'D:EclipseWorkSpaceCSVOperations
esults_semicolon_Separator.csv'>;> > >public> static> void> main(String[] args)> >{> > >System.out.println(>'Read Data Line by Line With Header
'>);> >readDataLineByLine(CSV_FILE_PATH);> >System.out.println(>'_______________________________________________'>);> > >System.out.println(>'Read All Data at Once and Hide the Header also
'>);> >readAllDataAtOnce(CSV_FILE_PATH);> >System.out.println(>'_______________________________________________'>);> > >System.out.println(>'Custom Separator here semi-colon
'>);> >readDataFromCustomSeparator(CSV_FILE_CUSTOM_SEPARATOR);> >System.out.println(>'_______________________________________________'>);> >}> > >public> static> void> readDataLineByLine(String file)> >{> > >try> {> > >// Create an object of filereader class> >// with CSV file as a parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvReader object passing> >// filereader as parameter> >CSVReader csvReader =>new> CSVReader(filereader);> >String[] nextRecord;> > >// we are going to read data line by line> >while> ((nextRecord = csvReader.readNext()) !=>null>) {> >for> (String cell : nextRecord) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> >}> > >public> static> void> readAllDataAtOnce(String file)> >{> >try> {> > >// Create an object of filereader class> >// with CSV file as a parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvReader object> >// and skip first Line> >CSVReader csvReader =>new> CSVReaderBuilder(filereader)> >.withSkipLines(>1>)> >.build();> >List allData = csvReader.readAll();> > >// print Data> >for> (String[] row : allData) {> >for> (String cell : row) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> >}> > >public> static> void> readDataFromCustomSeparator(String file)> >{> >try> {> >// Create object of filereader> >// class with csv file as parameter.> >FileReader filereader =>new> FileReader(file);> > >// create csvParser object with> >// custom separator semi-colon> >CSVParser parser =>new> CSVParserBuilder().withSeparator(>';'>).build();> > >// create csvReader object with> >// parameter filereader and parser> >CSVReader csvReader =>new> CSVReaderBuilder(filereader)> >.withCSVParser(parser)> >.build();> > >// Read all data at once> >List allData = csvReader.readAll();> > >// print Data> >for> (String[] row : allData) {> >for> (String cell : row) {> >System.out.print(cell +>' '>);> >}> >System.out.println();> >}> >}> >catch> (Exception e) {> >e.printStackTrace();> >}> >}> }> |
>
shloka mehta utdanning
>
Produksjon:
_______________________________________________ Read Data Line by Line With Header name rollno department result cgpa amar 42 cse pass 8.6 rohini 21 ece fail 3.2 aman 23 cse pass 8.9 rahul 45 ee fail 4.6 pratik 65 cse pass 7.2 raunak 23 me pass 9.1 suvam 68 me pass 8.2 _______________________________________________ Read All Data at Once and Hide the Header also amar 42 cse pass 8.6 rohini 21 ece fail 3.2 aman 23 cse pass 8.9 rahul 45 ee fail 4.6 pratik 65 cse pass 7.2 raunak 23 me pass 9.1 suvam 68 me pass 8.2 _______________________________________________ Custom Separator here semi-colon name rollno department result cgpa amar 42 cse pass 8.6 rohini 21 ece fail 3.2 aman 23 cse pass 8.9 rahul 45 ee fail 4.6 pratik 65 cse pass 7.2 raunak 23 me pass 9.1 suvam 68 me pass 8.2 _______________________________________________>
I fremtidige artikler vil vi inkludere flere operasjoner på CSV-fil ved bruk av OpenCSV.
Referanser: Dokumentasjon for CSVReader klasse , OpenCSV-dokumentasjon