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.
Puede probar Aspose.Cells for Java . Puede usar este componente para abrir un archivo CSV y guardarlo como un archivo XLS usando Java. También lo ayuda a trabajar con diferentes versiones de archivos de Excel.
Divulgación: trabajo como desarrollador evangelista en Aspose.
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();
}
}