JSFを使用してオンザフライ/ランタイムでCSVファイルを生成しています。コードは次のとおりです。
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = HttpServletResponse)context.getExternalContext().getResponse();
int read = 0;
byte[] bytes = new byte[1024];
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
ServletOutputStream os = null;
StringBuffer stringBuffer1 = new StringBuffer("");
stringBuffer1.append("Disconnect Time");
stringBuffer1.append(',');
stringBuffer1.append("Calling Number");
stringBuffer1.append("01/06/2010 01:00:35 AM");
stringBuffer1.append(", ");
stringBuffer1.append("447744369900");
ByteArrayInputStream bis1;
try {
bis1 = new ByteArrayInputStream(stringBuffer1.toString().getBytes("UTF-8"));
os = response.getOutputStream();
while ((read = bis1.read(bytes)) != -1) {
os.write(bytes, 0, read);
}
os.flush();
os.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
FacesContext.getCurrentInstance().responseComplete();
以下は開いたときのファイルの内容です
Disconnect Time Calling Number
1/6/2010 1:00 4.47744E+11
実際に期待される結果は、AM/PMと完全な長さの数値を含む完全な日付形式になります。
Excel CSVの二重引用符の例をすでに試しました-数値セル形式とその他の空白スペースの追加の例ですが、機能しませんでした。また、ユーザーは数値列に対して算術演算を実行します。
前もって感謝します。