Пример в этой статье в основном описывает метод создания файлов CSV в Java. Конкретные шаги реализации следующие:
1. Создайте новый файл CSVUtils.java:
пакет com.saicfc.pmpf.internal.manage.utils;импорт java.io.BufferedWriter;импорт java.io.File;импорт java.io.FileInputStream;импорт java.io.FileNotFoundException;импорт java.io.FileOutputStream;импорт Java .io.IOException;импорт java.io.InputStream;импорт java.io.OutputStream;импорт java.io.OutputStreamWriter;импорт java.net.URLEncoder;импорт java.util.ArrayList;импорт java.util.Iterator;импорт java.util.LinkedHashMap;импорт java.util.List;импорт Java .util.Map;импорт javax.servlet.http.HttpServletResponse;импорт org.apache.commons.beanutils.BeanUtils;/** * Файловые операции*/public class CSVUtils { /** * Генерировать как файл CVS* @param ExportData * Список исходных данных * @param Map * Карта заголовка списка файла csv * @param outPutPath * Путь к файлу * @param fileName * Имя файла * @return */ @SuppressWarnings("rawtypes") public static File createCSVFile (List ExportData, карта LinkedHashMap, String outPutPath, String fileName) {File csvFile = null; BufferedWriter csvFileOutputStream = null; попробуйте {File file = new File (outPutPath); if (!file.exists()) {file.mkdir( ); } //Определяем формат имени файла и создаем csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath)); System.out.println("csvFile: " + csvFile // UTF-8 обеспечивает правильное чтение разделителя "," csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream); (csvFile), "UTF-8"), 1024); System.out.println("csvFileOutputStream: " + csvFileOutputStream); // Записываем заголовок файла для (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) { java.util.Map. propertyEntry = (java.util.Map.Entry) propertyIterator.next(); csvFileOutputStream .write(""" + (String) propertyEntry.getValue() != null ? (String) propertyEntry .getValue() : "" + """); if (propertyIterator.hasNext()) { csvFileOutputStream.write(","); } } csvFileOutputStream.newLine(); //Запись содержимого файла для (Iterator iterator = ExportData.iterator(); iterator.hasNext();) { Object row = (Object) iterator.next(); for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator .hasNext();) { java.util.Map.Entry propertyEntry = (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() } catch (Исключение е) {; e.printStackTrace(); } наконец { try { csvFileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return csvFile; } /** * Загрузить файл * @param response * @param csvFilePath * Путь к файлу * @param fileName * Имя файла * @throws IOException */ public static void ExportFile(ответ HttpServletResponse, String csvFilePath, String fileName) выдает IOException {Response.setContentType("application/csv;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder. encode(fileName, "UTF-8")); FileInputStream(csvFilePath); int len = 0; byte[] buffer = new byte[1024]; response.setCharacterEncoding("UTF-8"); OutputStream out = response.getOutputStream(); read(буфер)) > 0) { out.write(new byte[] { (байт) 0xEF, (байт) 0xBB, (байт) 0xBF }); out.write(buffer, 0, len); } } catch (FileNotFoundException e) { System.out.println(e } наконец { if (in != null) { try { in.close() ; } catch (Exception e) { throw new RuntimeException(e) } } } /** * Удалить все файлы в filePath в этом каталоге * @param filePath; * Путь к каталогу файлов*/ public static void deleteFiles(String filePath) { File file = new File(filePath); if (file.exists()) { File[] files = file.listFiles() for (int i = 0); ; i < files.length; i++) { if (files[i].isFile()) { files[i].delete(); } } } } /** * Удалить один файл* @param filePath * путь к каталогу файлов * @param fileName * имя файла */ public static void deleteFile(String filePath, String fileName) { File file = new File(filePath); if (file.exists()) { File[] files = file .listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { if (files[i].getName().equals(fileName)) { files[i].delete(); return; } } } } } /** * Тестовые данные* @param args */ @SuppressWarnings({ "rawtypes ", "непроверено" }) public static void main(String[] args) { List ExportData = new ArrayList<Map>(); Map row1 = new LinkedHashMap<String, String>(); row1.put("1", "11"); row1.put("2", "12"); row1.put("3", "13"); put("4", "14"); экспортДанные.add(строка1); row1 = new LinkedHashMap<String, String>(); row1.put("1", "21"); row1.put("2", "22"); row1.put("3", "23"); row1.put("4", "24"); LinkedHashMap(); map.put("1", "Первый столбец"); Map.put("2", "Второй столбец"); Map.put("3", "Третий столбец"); map.put("4", "Четвертый столбец"); String fileName = "Экспорт файла"; File file = CSVUtils.createCSVFile(exportData, map, path, fileName); fileName2 = file.getName(); System.out.println("Имя файла: " + fileName2);
2. Вызовите метод createCSVFile для создания файла CSV.
Имя строки = «Данные о возврате средств из банка»; Список ExportData = новый ArrayList (); LinkedHashMap datamMap = null; (); datamMap = новый LinkedHashMap(); datamMap.put("1", map.get("merOrderId")); datamMap.put("2",DateUtil.convertDateToString("ггггММдд", (Дата) map.get("orderTime"))); BigDecimal sum = (BigDecimal) map.get( "сумма"); String sumString = sum.divide(new BigDecimal(10)).toPlainString(); datamMap.put("3", sumString("4", map.get("remark") != null ? map.get("remark") : ""); ;} LinkedHashMap map = new LinkedHashMap(); map.put("1", "Номер заказа"); map.put("2", "Дата платежа"); map.put("3", "Сумма возврата денежных средств (целая единица: центы)"); map.put("4", "Причина возврата"); Файл file = CSVUtils.createCSVFile(exportData, map, filePath, name );//Сгенерировать файл CSV fileName = file.getName(); CSVUtils.exportFile(response, filePath + fileName, fileName);//Загрузить сгенерированный файл CSV;