生成csv,並下載

 /**
  * 會社マスタのレコードをCSVファイルにするメソッド。
  *
  * @param filename 作成するファイル名
  * @param in0 條件など
  * @return boolean
  * @throws Exception 例外
  */
 private boolean createCsvCompany(
  String filename,
  HttpServletRequest request,
        HttpServletResponse response)
  throws Exception {

  //戻り値
  boolean ret = false;

  try {

   //SQL文作成
   StringBuffer sql = new StringBuffer();

   sql.append("SELECT");
   sql.append("/n");
   sql.append(" TO_CHAR(SYSDATE,'YYYY/MM/DD HH:MI:SS') SDATE,");
   sql.append(" COMPANY_CODE,");
   sql.append(" COMPANY_NAME,");
   sql.append(" COMPANY_KANA,");
   sql.append(" COMPANY_SHORT_NAME,");
   sql.append(" COMPANY_ENGLISH,");
   sql.append(" COUNTRY,");
   sql.append(" STATE,");
   sql.append(" CITY,");
   sql.append(" STREET_ADDRESS1,");
   sql.append(" STREET_ADDRESS2,");
   sql.append(" CREATE_DATE,");
   sql.append(" UPDATE_DATE");
   sql.append(" FROM COMPANY");
   sql.append("/n");
   //filename =JPToUnicode(filename);
   sql.append(filename);
   String csvdata = null;

   //バッファのcsvデータをString型に変換
   //   csvdata = exchangeChar(sql.toString());
   csvdata = exchangeChar(sql.toString());

   /**
    * ファイル出力
    */

   BufferedWriter writer;
   writer = null;
   String outputFileName = null;

   //csvファイルの出力先は”_pdf_location”としてdataaccess.propertiesに記述する
   outputFileName = "aaa.txt";

   writer =
    new BufferedWriter(
     new OutputStreamWriter(
      new FileOutputStream(outputFileName),
      "EUC_JP"));

   writer.write(csvdata, 0, csvdata.length());

   if (writer != null) {
    writer.flush();
    writer.close();
   }

// 輸出下載的文件
  int iLength;
   response.setContentType(
    "application/musicnavi-csv; charset=x-sjis");
   response.setHeader(
    "Content-Disposition",
    "attachment; filename=/"" + "www" + ".csv/"");
 // response.setContentType(contenttype + "; charset=UTF-8");
  /*response.setContentType("application/octet-stream");*/
  //response.addHeader("Content-Disposition", "attachment;filename=" + fName);

   ServletOutputStream sos = response.getOutputStream();
   FileInputStream fos = new FileInputStream("aaa.txt");
   iLength = fos.available();
   byte b[] = new byte[iLength];

   //    Read File content
   fos.read(b);

   sos.write(b);
   sos.close();
   fos.close();

   ret = true;

  } catch (Exception e) {
   log.error("Exception!!" + e.getMessage());
   throw new Exception(e.getMessage());
  }

  return ret;
 }

 /**
   * Method exchangeChar.
   * @param str String
   * @return String
   */
 public static String exchangeChar(String str) {
  String line = "";
  char[] ch = str.toCharArray();

  char[][] sjToMsj;
  sjToMsj = new char[8][2];
  sjToMsj[0][0] = 0xff3c;
  sjToMsj[0][1] = 0x2016;
  sjToMsj[1][0] = 0xff5e;
  sjToMsj[1][1] = 0x301c;
  sjToMsj[2][0] = 0x2225;
  sjToMsj[2][1] = 0x2016;
  sjToMsj[3][0] = 0xff0d;
  sjToMsj[3][1] = 0x2212;
  sjToMsj[4][0] = 0xffe0;
  sjToMsj[4][1] = 0x00a2;
  sjToMsj[5][0] = 0xffe1;
  sjToMsj[5][1] = 0x00a3;
  sjToMsj[6][0] = 0xffe2;
  sjToMsj[6][1] = 0x00ac;
  sjToMsj[7][0] = 0x2015;
  sjToMsj[7][1] = 0x2014;

  line = String.copyValueOf(ch);

  for (int i = 0; i < sjToMsj.length; i++) {
   line = line.replace(sjToMsj[i][0], sjToMsj[i][1]);

  }
  return line;
 }

發佈了43 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章