Tengo un requisito para crear un archivo XLS sobre la base de un archivo CSV utilizando Java.¿Cómo crear un archivo de Excel basado en un archivo CSV utilizando Java?
Por favor supérenme qué API es la mejor para crear archivos de Excel.
Gracias
Tengo un requisito para crear un archivo XLS sobre la base de un archivo CSV utilizando Java.¿Cómo crear un archivo de Excel basado en un archivo CSV utilizando Java?
Por favor supérenme qué API es la mejor para crear archivos de Excel.
Gracias
le sugiero que utilice el Apache POI framework (específicamente el HSSF/XSSF API) 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.
Juntar el ejemplo de PDI de here y el ejemplo OpenCSV de here 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();
}
}
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 en open a CSV file y save it as XLS file usando Java. También lo ayuda a trabajar con diferentes versiones de archivos de Excel.
Divulgación: trabajo como desarrollador evangelista en Aspose.
Usando maravilloso, me gustaría hacerlo 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()
Será método terriblemente lento cuando su csv cuenta con más de 100 mil líneas – whd