En Comma-Separated Values (CSV) fil er bare en normal almindelig tekstfil, gemmer data i kolonne for kolonne, og opdeler det med en separator (f.eks. er det normalt et komma , ).
OpenCSV er et CSV-parserbibliotek til Java. OpenCSV understøtter alle de grundlæggende CSV-type operationer, du ønsker at udføre. Java 7 er i øjeblikket den mindste understøttede version af OpenCSV. Java-sproget giver ikke nogen indbygget support til effektiv håndtering af CSV-filer, så vi bruger OpenCSV til håndtering af CSV-filer i Java.
Sådan bruges OpenCSV
1. For maven-projekter kan du inkludere OpenCSV-maven-afhængigheden i pom.xml-filen.
HTML
<>dependency>>> ><>groupId>>com.opencsvgroupId> |
java design mønstre
>
>
2. For Gradle Project kan du inkludere OpenCSV-afhængigheden.
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'>
3. Du kan downloade OpenCSV Jar og inkludere i din projektklassesti.
Nogle nyttige klasser af opencsv
- CSVReader – Denne klasse giver operationerne til at læse CSV-filen som en liste over String-array. CSVWriter – Denne klasse giver os mulighed for at skrive dataene til en CSV-fil. CsvToBean – Denne klasse vil blive brugt, når du ønsker at udfylde dine java bønner fra et CSV-filindhold. BeanToCsv – Denne klasse hjælper med at eksportere data til CSV-fil fra din java-applikation.
Læser CSV-fil
For at læse en CSV-fil skal du bruge CSVReader-klassen. Følgende er eksempel på CSV-fil, som vi læser.
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 læse csv-filen på to måder:
1. Læs data linje for linje : Lad os se, hvordan du læser CSV-fil linje for linje. For at læse data linje for linje skal vi først konstruere og initialisere CSVReader-objektet ved at sende fillæserobjektet i CSV-filen. Derefter skal vi kalde readNext()-metoden til CSVReader-objektet for at læse 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. Læs alle data på én gang: Vi læser CSV-posterne én efter én ved hjælp af readNext()-metoden. CSVReader giver også en metode kaldet readAll() til at læse alle poster på én gang ind i en liste.
List allData = csvReader.readAll();>
Når vi læser csv-fil som standard, ignoreres header ikke, som vist i output af ovenstående koder. Når vi skal springe det første element over på listen, kan vi angive startlinjen, mens vi opretter CSVReader.
java check er null
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();> >}> }> |
>
>
Læser CSV-fil med forskellig separator
CSV-filer kan adskilles med et andet skilletegn end et komma f.eks. semikolon, pipe osv. Det følgende eksempel viser, hvordan man læser data fra CSV-filen adskilt af 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 brugerdefineret separator oprettes den første CSVParser med et specifikt parsertegn.
CSVParser parser = new CSVParserBuilder().withSeparator(';').build();> Derefter vil vi oprette CSVReader-objektet medCSVParser()-metoden sammen med konstruktøren og leverede parameteren lavet parser-objekt til withCSVParser-metoden. Til sidst kalder vi byggemetoden for at 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 – Læsning af to csv-filer result.csv og results_semicolon_Separator.csv
result.csv har standardseparator ', ' men results_semicolon_Separator.csv har en separator ';' 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();> >}> >}> }> |
>
linje autocad kommando
>
Produktion:
_______________________________________________ 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 handlinger på CSV-fil ved hjælp af OpenCSV.
Referencer: CSVReader klasse Dokumentation , OpenCSV-dokumentation