Un archivo de valores separados por comas (CSV) es simplemente un archivo normal de texto sin formato, almacena datos columna por columna y los divide mediante un separador (por ejemplo, normalmente es una coma «,»).
OpenCSV es una biblioteca de analizador CSV para Java. OpenCSV admite todas las operaciones básicas de tipo CSV que desee realizar. Java 7 es actualmente la versión mínima admitida para OpenCSV. El lenguaje Java no brinda soporte nativo para manejar archivos CSV de manera efectiva, por lo que estamos usando OpenCSV para manejar archivos CSV en Java.
¿Cómo agregar OpenCSV en su proyecto?
< dependency > < groupId >com.opencsv</ groupId > < artifactId >opencsv</ artifactId > < version >4.1</ version > </ dependency > |
compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
- Escribir un archivo CSV es tan simple como leerlo. Cree una instancia de CSVWriter pasando el objeto FileWriter como parámetro y comience a escribir datos en el archivo CSV utilizando métodos de CSVWriter Class. Después de escribir los datos, debemos cerrar la conexión CSVWriter llamando al método close() de la clase CSVWriter.
- Escribir datos línea por línea: CSVWriter puede escribir línea por línea usando el método writeNext() donde se pasa una array de strings con cada elemento separado por comas como una entrada separada.
CÓDIGO:public
static
void
writeDataLineByLine(String filePath)
{
// first create file object for file placed at location
// specified by filepath
File file =
new
File(filePath);
try
{
// create FileWriter object with file as parameter
FileWriter outputfile =
new
FileWriter(file);
// create CSVWriter object filewriter object as parameter
CSVWriter writer =
new
CSVWriter(outputfile);
// adding header to csv
String[] header = {
"Name"
,
"Class"
,
"Marks"
};
writer.writeNext(header);
// add data to csv
String[] data1 = {
"Aman"
,
"10"
,
"620"
};
writer.writeNext(data1);
String[] data2 = {
"Suraj"
,
"10"
,
"630"
};
writer.writeNext(data2);
// closing writer connection
writer.close();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Salida: archivo result.csv con los siguientes datos
"Name", "Class", "Marks" "Aman", "10", "620" "Suraj", "10", "630"
- Escriba todos los datos a la vez: para escribir datos a la vez, llame al método writeAll() de la clase CSVWriter y pase A List of String[] como parámetro con cada String[] representando una línea del archivo.
CÓDIGO:public
static
void
writeDataAtOnce(String filePath)
{
// first create file object for file placed at location
// specified by filepath
File file =
new
File(filePath);
try
{
// create FileWriter object with file as parameter
FileWriter outputfile =
new
FileWriter(file);
// create CSVWriter object filewriter object as parameter
CSVWriter writer =
new
CSVWriter(outputfile);
// create a List which contains String array
List<String[]> data =
new
ArrayList<String[]>();
data.add(
new
String[] {
"Name"
,
"Class"
,
"Marks"
});
data.add(
new
String[] {
"Aman"
,
"10"
,
"620"
});
data.add(
new
String[] {
"Suraj"
,
"10"
,
"630"
});
writer.writeAll(data);
// closing writer connection
writer.close();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Salida: archivo result.csv con los siguientes datos
"Name", "Class", "Marks" "Aman", "10", "620" "Suraj", "10", "630"
De forma predeterminada, el separador de CSV será una coma (,). Si desea crear otro carácter como separador, puede pasarlo como argumento a la clase CSVWriter.
Syntax : CSVWriter(Writer writer, char separator, char quotechar, char escapechar, String lineEnd) Description : Constructs CSVWriter with supplied separator, quote char, escape char and line ending.
Código:
public static void writeDataForCustomSeparatorCSV(String filePath) { // first create file object for file placed at location // specified by filepath File file = new File(filePath); try { // create FileWriter object with file as parameter FileWriter outputfile = new FileWriter(file); // create CSVWriter with '|' as separator CSVWriter writer = new CSVWriter(outputfile, '|', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END); // create a List which contains String array List<String[]> data = new ArrayList<String[]>(); data.add(new String[] { "Name", "Class", "Marks" }); data.add(new String[] { "Aman", "10", "620" }); data.add(new String[] { "Suraj", "10", "630" }); writer.writeAll(data); // closing writer connection writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Salida: archivo result.csv con los siguientes datos
Name|Class|Marks Aman|10|620 Suraj|10|630
Ejemplo:
vamos a crear un programa java que genere un archivo csv separado por punto y coma y contenga los datos proporcionados como entrada.
Input: Enter no of rows 9 Enter Data Name Class Marks Aman 10 543 Amar 10 541 Sanjeet 10 555 Luv 10 580 Ranjeet 10 512 Rabi 10 540 Dev 10 333 Sunny 10 198
Código:
// Java program to illustrate // for Writing Data in CSV file import java.io.*; import java.util.*; import com.opencsv.CSVWriter; public class ResultGenerator { private static final String CSV_FILE_PATH = "./result.csv"; public static void main(String[] args) { addDataToCSV(CSV_FILE_PATH); } public static void addDataToCSV(String output) { // first create file object for file placed at location // specified by filepath File file = new File(output); Scanner sc = new Scanner(System.in); try { // create FileWriter object with file as parameter FileWriter outputfile = new FileWriter(file); // create CSVWriter with ';' as separator CSVWriter writer = new CSVWriter(outputfile, ';', CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END); // create a List which contains Data List<String[]> data = new ArrayList<String[]>(); System.out.println("Enter no of rows"); int noOfRow = Integer.parseInt(sc.nextLine()); System.out.println("Enter Data"); for (int i = 0; i < noOfRow; i++) { String row = sc.nextLine(); String[] rowdata = row.split(" "); data.add(rowdata); } writer.writeAll(data); // closing writer connection writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Salida: archivo result.csv con los siguientes datos
Name;Class;Marks Aman;10;543 Amar;10;541 Sanjeet;10;555 Luv;10;580 Ranjeet;10;512 Rabi;10;540 Dev;10;333 Sunny;10;198
En artículos futuros, incluiremos más operaciones en archivos CSV usando OpenCSV.
Referencia: documentación de OpenCSV , documentación de la clase CSVWriter
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA