この記事の例では、主に Java で CSV ファイルを生成する方法について説明します。具体的な実装手順は次のとおりです。
1. 新しい CSVUtils.java ファイルを作成します。
パッケージ com.saicfc.pmpf.internal.manage.utils;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java .io.IOException;インポート java.io.InputStream;インポートjava.io.OutputStream;import java.io.OutputStreamWriter;import java.net.URLEncoder;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java .util.Map;import javax.servlet.http.HttpServletResponse;import 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) { ファイル csvFile = null; csvFileOutputStream = null; file ファイル = new File(outPutPath) if (!file.exists()); ); } //ファイル名の形式を定義し、csvFile = File.createTempFile(fileName, ".csv", new File(outPutPath)); System.out.println("csvFile: " + csvFile); // UTF-8 により区切り文字を正しく読み取ることができます "," csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream) (csvファイル)、"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(); + (文字列) propertyEntry.getValue() != null ? (文字列) propertyEntry .getValue() : "" + """); if (propertyIterator.hasNext()) { csvFileOutputStream.write(","); } } csvFileOutputStream.newLine(); //(Iterator iterator = exportData.iterator(); のファイル内容を書き込みます。 iterator.hasNext();) { オブジェクト行 = (オブジェクト) iterator.next(); for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator .hasNext();) { java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator .next(); BeanUtils.getProperty(row, (String) propertyEntry.getKey())); if (propertyIterator.hasNext()) { csvFileOutputStream.write(",") } } if (iterator.hasNext()) { csvFileOutputStream.newLine( ); } } csvFileOutputStream.flush() } キャッチ (例外 e); e.printStackTrace(); }finally { try { csvFileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } /** * ファイルのダウンロード * @param csvFilePath * ファイルパス * @param fileName * ファイル名 * @throws IOException */ public static void importFile(HttpServletResponse response, String csvFilePath, String fileName) throws IOException { response.setContentType("application/csv;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder. encode(ファイル名, "UTF-8")); 入力ストリーム in = null; を試してください。 FileInputStream(csvFilePath); byte[] バッファ = new byte[1024]; 出力ストリーム出力 = 応答.getOutputStream(); read(buffer)) > 0) { out.write(new byte[] { (バイト) 0xEF、(バイト) 0xBB、(バイト) 0xBF }); out.write(buffer, 0, len); } } catch (FileNotFoundException e) { System.out.println(e); }finally { 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() } } } /** * 1 つのファイルを削除します* @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", "12"); row1.put("3", "13"); put("4", "14"); row1 = new LinkedHashMap<String, "21"); row1.put("2", "22"); row1.put("4", "24"); LinkedHashMap(); map.put("1", "2 番目の列"); map.put("4", "4 番目の列"); String path = "c:/export/"; String fileName = "ファイル エクスポート"; fileName2 = file.getName(); System.out.println("ファイル名: " + ファイル名 2);
2. createCSVFile メソッドを呼び出して CSV ファイルを生成します
String name = "銀行返金データ";List exportData = new ArrayList();LinkedHashMap datamMap = null;for (Iterator iterator =paymentList.iterator(); iterator.hasNext();) { HashMap マップ = (HashMap) 次のイテレータ。 (); datamMap = 新しい LinkedHashMap(); map.get("merOrderId")); datamMap.put("2",DateUtil.convertDateToString("yyyyMMdd", (日付) map.get("orderTime"))); "金額"); 文字列 amountString = amount.divide(new BigDecimal(10)).toPlainString(); datamMap.put("3", amountString); datamMap.put("4", map.get("remark") != null ?map.get("remark") : ""); ;} LinkedHashMap マップ = new LinkedHashMap(); map.put("1", "注文番号"); map.put("3", "返金額(整数単位:セント)"); map.put("4", "返還理由"); ファイル file = CSVUtils.createCSVFile(exportData, map, filePath, name) );//CSV ファイルを生成する fileName = file.getName();//生成された CSV ファイルをダウンロードする