El ejemplo de este artículo describe principalmente el método para generar archivos CSV en Java. Los pasos de implementación específicos son los siguientes:
1. Cree un nuevo archivo CSVUtils.java:
paquete com.saicfc.pmpf.internal.manage.utils;importar java.io.BufferedWriter;importar java.io.File;importar java.io.FileInputStream;importar java.io.FileNotFoundException;importar java.io.FileOutputStream;importar java .io.IOException;importar java.io.InputStream;importar java.io.OutputStream;importar java.io.OutputStreamWriter;importar java.net.URLEncoder;importar java.util.ArrayList;importar java.util.Iterator;importar java.util.LinkedHashMap;importar java.util.List;importar java .util.Map;importar javax.servlet.http.HttpServletResponse;importar org.apache.commons.beanutils.BeanUtils;/** * Operaciones de archivo*/public class CSVUtils { /** * Generar como archivo CVS* @param exportData * Lista de datos de origen * @param map * Listar mapa de encabezado del archivo csv * @param outPutPath * Ruta del archivo * @param fileName * Nombre del archivo * @return */ @SuppressWarnings("rawtypes") Archivo público estático createCSVFile(List exportData, LinkedHashMap map, String outPutPath, String fileName) { Archivo csvFile = null; BufferedWriter csvFileOutputStream = null file file = new File(outPutPath); } } //Definir el formato del nombre del archivo y crear csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath)); System.out.println("csvFile: " + csvFile); // UTF-8 permite la lectura correcta del delimitador "," csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream) (archivo csv), "UTF-8"), 1024); System.out.println("csvFileOutputStream: " + csvFileOutputStream); // Escribe el encabezado del archivo para (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) { java.util.Map Entry. propiedadEntry = (java.util.Map.Entry) propertyIterator.next(); csvFileOutputStream .write(""" + (Cadena) propertyEntry.getValue() != null ? (Cadena) propertyEntry .getValue() : "" + """); if (propertyIterator.hasNext()) { csvFileOutputStream.write(","); } } csvFileOutputStream.newLine(); //Escribe el contenido del archivo para (Iterator iterator = exportData.iterator(); iterator.hasNext();) { Fila de objeto = (Objeto) iterator.next(); para (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator .hasNext();) { java.util.Map.Entry propiedadEntry = (java.util.Map.Entry) propertyIterator .next(); csvFileOutputStream.write((String) BeanUtils.getProperty(row, (String) propertyEntry.getKey())); if (propertyIterator.hasNext()) { csvFileOutputStream.write("," } } if (iterator.hasNext()) { csvFileOutputStream.newLine( ); } } csvFileOutputStream.flush(); captura (Excepción e) { e.printStackTrace(); } finalmente { intentar { csvFileOutputStream.close(); captura (IOException e) { e.printStackTrace() } } return csvFile } /** * Descargar archivo * @param respuesta * @param csvFilePath; * Ruta del archivo * @param fileName * Nombre del archivo * @throws IOException */ public static void exportFile(respuesta HttpServletResponse, String csvFilePath, String fileName) lanza IOException {respuesta.setContentType("application/csv;charset=UTF-8"); respuesta.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder. codificar (nombre de archivo, "UTF-8")); InputStream en = nulo; intente { en = nuevo FileInputStream(csvFilePath); int len = 0; byte[] buffer = nuevo byte[1024]; respuesta.setCharacterEncoding("UTF-8"); OutputStream out = respuesta.getOutputStream(); lectura (búfer)) > 0) { out.write (nuevo byte [] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }); out.write(buffer, 0, len); } } catch (FileNotFoundException e) { System.out.println(e } finalmente { if (in!= null) { try { in.close()); ; } catch (Exception e) { throw new RuntimeException(e); } } } } /** * Eliminar todos los archivos en filePath en este directorio * @param filePath * Ruta del directorio de archivos*/ public static void deleteFiles(String filePath) { Archivo archivo = nuevo Archivo(file.exists()) { Archivo[] archivos = file.listFiles(); ; i < files.length; i++) { if (files[i].isFile()) { files[i].delete(); filePath * ruta del directorio de archivos * @param fileName * nombre de archivo */ public static void eliminarFile(String filePath, String fileName) { Archivo archivo = new File(filePath) if (file.exists()) { Archivo[] archivos = archivo); .listFiles(); para (int i = 0; i < archivos.length; i++) { si (archivos[i].isFile()) { si (archivos[i].getName().equals(fileName)) { archivos[i].delete(); return; ", "desmarcado" }) public static void main(String[] args) { Lista exportData = new ArrayList<Map>(); Mapa fila1 = nuevo LinkedHashMap<Cadena, Cadena>(); fila1.put("1", "11"); fila1.put("2", "12"); fila1.put("3", "13"); put("4", "14"); exportData.add(row1); fila1 = nuevo LinkedHashMap<String, String>(); fila1.put("2", "22"); fila1.put("3", "23"); fila1.put("4", "24"); exportData.add(fila1); LinkedHashMap(); map.put("1", "Primera columna"); map.put("2", "Segunda columna"); map.put("4", "Cuarta columna"); Ruta de cadena = "c:/exportar/"; Nombre de archivo de cadena = "Exportar archivo"; fileName2 = file.getName(); System.out.println("Nombre de archivo: " + fileName2 }}
2. Llame al método createCSVFile para generar un archivo CSV.
Nombre de cadena = "Datos de reembolso bancario";List exportData = new ArrayList();LinkedHashMap datamMap = null;for (Iterator iterator = refundList.iterator(); iterator.hasNext();) { HashMap map = (HashMap) iterador siguiente. (); datamMap = nuevo LinkedHashMap(); datamMap.put("1", map.get("merOrderId")); datamMap.put("2",DateUtil.convertDateToString("aaaaMMdd", (Fecha) map.get("orderTime"))); "cantidad"); Cadena cantidadString = cantidad.divide(new BigDecimal(10)).toPlainString(); datamMap.put("3", cantidadCadena); datamMap.put("4", map.get("observación") != null ? map.get("observación") : ""); ;} Mapa LinkedHashMap = new LinkedHashMap(); map.put("1", "Número de pedido"); map.put("2", "Fecha de pago"); map.put("3", "Monto en efectivo devuelto (unidad entera: centavos)"); map.put("4", "Motivo de la devolución"); );//Generar archivo CSV fileName = file.getName(); CSVUtils.exportFile(response, filePath + fileName, fileName);//Descargar el archivo CSV generado