- PR -

JSPでデータをMSWORD出力

1
投稿者投稿内容
striver
会議室デビュー日: 2004/12/03
投稿数: 15
投稿日時: 2004-12-03 15:39
DBにあるデータをMSWORDで出力できるよう下記のように
設定を行ったけど、たまに上手く出力できて、たまには文字化けが発生
している。因みに、英文字には問題なくて、日本語文字だけで、
発生しております。なにが原因と思われますか?だれかが知っていれば、
是非教えてください。よろしくお願い致します。

STRIVERより


<%
// UPLOAD data file to MSWORD setting ------------------
response.setContentType("application/msword");
%>

<%@ page pageEncoding="Windows-31J"
contentType="text/html;charset=Windows-31J"
import="java.util.*,javax.mail.*,javax.mail.internet.*,javax.activation.*,java.io.*,java.text.*,java.sql.*,java.util.Date;" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

<%
// set MSWORD filename ----------------------------------
response.setHeader("Content-disposition","attachment; filename=" + docu_valu + ".doc");
%>




striver
会議室デビュー日: 2004/12/03
投稿数: 15
投稿日時: 2004-12-03 15:59
ご回答ありがとうございます。
で、その日本語の文字化けをなくすのは何か
良い方法あるのでしょうか?
よろしくお願い致します。
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-12-03 16:04
こんにちは。

まず、

引用:

striverさんの書き込み (2004-12-03 15:39) より:

<%
// UPLOAD data file to MSWORD setting ------------------
response.setContentType("application/msword");
%>

<%
// set MSWORD filename ----------------------------------
response.setHeader("Content-disposition","attachment; filename=" + docu_valu + ".doc");
%>






引用:

striverさんの書き込み (2004-12-03 15:39) より:

<%@ page pageEncoding="Windows-31J"
contentType="text/html;charset=Windows-31J"
import="java.util.*,javax.mail.*,javax.mail.internet.*,javax.activation.*,java.io.*,java.text.*,java.sql.*,java.util.Date;" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">




は、矛盾しています。
HTMLではなく、MSWORDを返したいのではないでしょうか?
そのあたりから直してみてはいかがでしょう。
striver
会議室デビュー日: 2004/12/03
投稿数: 15
投稿日時: 2004-12-03 16:22
ご回答ありがとうございます。
JSPではまだ慣れていないので、大変申し訳ないです。
下記の通り変更したのですけど、まだ文字化けは直しいないです。
よろしくお願い申し上げます。

<%@ page pageEncoding="Windows-31J"
contentType="application/msword;charset=Windows-31J"
import="java.util.*,javax.mail.*,javax.mail.internet.*,javax.activation.*,java.io.*,java.text.*,java.sql.*,java.util.Date;"
%>


<%
// set MSWORD filename ----------------------------------
response.setHeader("Content-disposition","attachment; filename=" + docu_valu + ".doc");
%>


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-03 16:50
ドキュメントの実体はどこで生成しているのでしょう?
一旦ファイルとして書き出しているのであれば、それはうまく開けますか?

「たまに上手く出力できて、たまには文字化けが発生」というのであればまず現象の発生条件を切り分けてはいかがでしょうか?
同じデータであれば必ず文字化けするのか、しないのか。
クライアントのブラウザや OS によって発生状況がことなるのか、等。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-03 17:06
POI 等で書き出したファイルを送信するのであれば JSPWriter でなくて ServletOutputStream で送信するべきですね。
つまり JSP 内ではなく、Servlet として実装してみましょう。
striver
会議室デビュー日: 2004/12/03
投稿数: 15
投稿日時: 2004-12-03 17:19
ご回答大変ありがとうございます。
因みに、SERVLETの方はまだ詳しくないので、
出来れば、JSPだけでこれを解決したいですね。
ところで、情報追加なのですけど、JSPでDBにある
添付ファイルDOWNLOADする際、ファイル名は英文字で
書かれた場合、DOWNLOADは上手く出来たのですけど、
ファイル名が日本語になるとエラーが発生してDOWNLOAD
が出来なくなります。今の問題と関係は有るのでしょうか?

よろしくお願いします。
striver
会議室デビュー日: 2004/12/03
投稿数: 15
投稿日時: 2004-12-03 18:46
下記のように設定を行って、結果的には上手くいきました。
MSWORDにデータを出力すると日本語の文字化けが
直りました。意見を色々頂いて、大変ありがとうございます。

// MSWORDのアプリを設定−−
<%@ page contentType="application/msword;charset=Shift_JIS" %>

// 保存するMSWORDのファイル名を設定
<%
// set MSWORD filename ----------------------------------
response.setHeader("Content-disposition","attachment; filename=" + docu_valu + "REV" + revi_numb + ".doc");
%>


<html>
<head>
// HHTPのレスポンスコード変換
<meta http-equiv="Content-Type" content="text/html;charset=iso-2022-jp">
<title>QCL2004 Daily Report Print Mode</title>

上記の内容を他の方にも参考にしていただければ、幸いです。

STRIVERより

1

スキルアップ/キャリアアップ(JOB@IT)