scanner modificar manipular libreria leer guardar extraer datos csvwriter crear array archivo java excel csv

modificar - manipular csv java



¿Cómo crear un archivo de Excel basado en un archivo CSV usando Java? (5)

Tengo un requisito para crear un archivo XLS sobre la base de un archivo CSV usando Java.

Por favor supérenme qué API es la mejor para crear un archivo de Excel.

Gracias



Apache POI es una biblioteca que puede manejar todo tipo de documentos de Microsoft Office, incluido MS Excel. Puede leer el contenido del archivo csv con código Java simple y usar esa biblioteca para crear y guardar un documento de MS Excel.



Usando Groovy, lo haría de esta manera:

// groovy to generate large csv file def GROOVY_HOME = new File( System.getenv(''GROOVY_HOME'') ) if ( !GROOVY_HOME.canRead() ) { println( "Missing environment variable GROOVY_HOME: ''${GROOVY_HOME}''" ) System.exit(0) } File file = new File("csv.csv") if ( file.exists() ) { assert file.delete() assert file.createNewFile() } boolean append = true FileWriter fileWriter = new FileWriter(file, append) BufferedWriter buffWriter = new BufferedWriter(fileWriter) buffWriter.write "sdiType=ReferenceValue,,,/n" buffWriter.write "ListName,ListStartDate,Value,ValueStartDate/n" println( "Writing to file ''csv.csv''" ) def y = 5000 while ( y-- > 0 ) { buffWriter.write "test" + y + ",1/1/2001,2008,1/1/2001/n" } buffWriter.flush() buffWriter.close()


Le sugiero que use el marco de POI de Apache (específicamente la API HSSF / XSSF ) para escribir el archivo XLS.

Para leer un archivo CSV, sugiero que use OpenCSV, ya que se ocupará de los caracteres escapados, etc. para usted.

Combinando el ejemplo de POI de aquí y el ejemplo de OpenCSV de aquí le da esto:

import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import au.com.bytecode.opencsv.CSVReader; class Test { public static void main(String[] args) throws IOException { Workbook wb = new HSSFWorkbook(); CreationHelper helper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); CSVReader reader = new CSVReader(new FileReader("data.csv")); String[] line; int r = 0; while ((line = reader.readNext()) != null) { Row row = sheet.createRow((short) r++); for (int i = 0; i < line.length; i++) row.createCell(i) .setCellValue(helper.createRichTextString(line[i])); } // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); } }