texto scanner modificar manipular leer guardar extraer datos csvwriter crear como array archivo java excel csv export-to-csv

scanner - manipular csv java



Java: escribir cadenas en un archivo CSV (4)

Básicamente es porque MS Excel no puede decidir cómo abrir el archivo con dicho contenido.

Cuando coloca ID como primer carácter en un archivo de tipo Hoja de cálculo, coincide con la especificación de un archivo SYLK y MS Excel (y posiblemente otras aplicaciones de hoja de cálculo) intenta abrirlo como un archivo SYLK. Pero al mismo tiempo, no cumple con la especificación completa de un archivo SYLK ya que el resto de los valores en el archivo están separados por comas. Por lo tanto, se muestra el error.

Para resolver el problema, cambie "ID" a "id" y debería funcionar como se esperaba.

Esto es raro ¡Pero sí!

También tratando de minimizar el acceso a los archivos utilizando menos objetos de archivo.

Lo probé y el código a continuación funciona perfecto.

import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; public class CsvWriter { public static void main(String[] args) { try (PrintWriter writer = new PrintWriter(new File("test.csv"))) { StringBuilder sb = new StringBuilder(); sb.append("id,"); sb.append('',''); sb.append("Name"); sb.append(''/n''); sb.append("1"); sb.append('',''); sb.append("Prashant Ghimire"); sb.append(''/n''); writer.write(sb.toString()); System.out.println("done!"); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } } }

Estoy tratando de escribir datos en un archivo csv con Java, sin embargo, cuando trato de abrir el archivo producido con Excel, recibo un error que dice que el archivo está dañado. Al abrir el archivo en el bloc de notas, parece estar formateado correctamente, así que no estoy seguro de cuál es el problema. Estoy usando la clase FileWriter para generar los datos en el archivo.

FileWriter writer = new FileWriter("test.csv"); writer.append("ID"); writer.append('',''); writer.append("name"); writer.append('',''); ... writer.append(''/n''); writer.flush(); writer.close();

¿Necesito usar alguna biblioteca en Java para imprimir en un archivo csv? Supuse que podría hacer esto de forma nativa en Java siempre que utilizara el formato correcto.

Agradezco la ayuda

Shaw


Creo que este es un código simple en Java que mostrará el valor de la cadena en CSV después de compilar este código.

public class CsvWriter { public static void main(String args[]) { // File input path System.out.println("Starting...."); File file = new File("/home/Desktop/test/output.csv"); try { FileWriter output = new FileWriter(file); CSVWriter write = new CSVWriter(output); // Header column value String[] header = { "ID", "Name", "Address", "Phone Number" }; write.writeNext(header); // Value String[] data1 = { "1", "First Name", "Address1", "12345" }; write.writeNext(data1); String[] data2 = { "2", "Second Name", "Address2", "123456" }; write.writeNext(data2); String[] data3 = { "3", "Third Name", "Address3", "1234567" }; write.writeNext(data3); write.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println("End."); } }


import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; public class CsvFile { public static void main(String[]args){ PrintWriter pw = null; try { pw = new PrintWriter(new File("NewData.csv")); } catch (FileNotFoundException e) { e.printStackTrace(); } StringBuilder builder = new StringBuilder(); String ColumnNamesList = "Id,Name"; // No need give the headers Like: id, Name on builder.append builder.append(ColumnNamesList +"/n"); builder.append("1"+","); builder.append("Chola"); builder.append(''/n''); pw.write(builder.toString()); pw.close(); System.out.println("done!"); } }


String filepath="/tmp/employee.csv"; FileWriter sw = new FileWriter(new File(filepath)); CSVWriter writer = new CSVWriter(sw); writer.writeAll(allRows); String[] header= new String[]{"ErrorMessage"}; writer.writeNext(header); List<String[]> errorData = new ArrayList<String[]>(); for(int i=0;i<1;i++){ String[] data = new String[]{"ErrorMessage"+i}; errorData.add(data); } writer.writeAll(errorData); writer.close();