JAvaエクスポートword
4863 ワード
エクスポート機能を実現すると、多くの人が人気のあるフレームワークを選択して完成します.このようにするのは厚かましいことではない.しかし、いくつかの簡単な導出のために一つの枠組みを導入するのは、牛刀で鶏を殺すような感じがします.JAva.ioが独自のインポートエクスポート機能でこれらの簡単な問題を解決できます.また,エクスポートフレームワークもjava.ioに基づく拡張である.
ページの内容をjava.ioが持つ機能でエクスポートする方法を簡単に説明します.
エクスポートするページの内容は次のとおりです.
ここでは、エクスポート時にページがポップアップしないように、次のように処理します.
1、headにbaseラベルを追加する
2、bodyにiframeを追加する
バックグラウンドアクション
注意:
1、ファイル名をエンコードする場合、エクスポートできない場合があります.
2、outputstreamに対してwrite操作を実行する場合、3番目のパラメータは必ず1番目のパラメータと一致してください.そうしないと、エクスポート内容が欠落する可能性があります.
すぐに書く
ではなく
原因は簡単です.あなたは知っています.
struts.xmlファイル構成に対応
actionのメソッドでは値を返す必要がないため,ここでは多くの構成を必要としない.
ページの内容をjava.ioが持つ機能でエクスポートする方法を簡単に説明します.
エクスポートするページの内容は次のとおりです.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base target="download"/>
<title>
<s:property value="#request.title"/>
</title>
<jsp:include page="../common/meta.jsp"/>
<STYLE type="text/css">
</STYLE>
<script type="text/javascript">
$(function(){
$('#expinfo').val($('#s_info').html());
});
// 2
function printInfo(){
//
$('#header_div').css('display','none');
window.print();
$('#header_div').css('display','block');
}
</script>
</head>
<body>
<div id="header_div">
<form name="expform" id="expform" method="post" action="${root}/jxEval/rwexp.action">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr style="height:30px">
<td width="6%">
<textarea name="expinfo" id="expinfo" style="display: none;" ></textarea>
<!-- , -->
<input type="hidden" name="fileName" id="fileName" value="<s:property value="#request.title"/>.doc">
</td>
<td align="right">
<input type="submit" class="btn" value=" " title=" Word" style="width:60px"/>
<input type="button" class="btn" value=" " title=" " style="width:60px" onclick="printInfo()"/>
</td>
</tr>
</table>
</form>
</div>
<div id="s_info">
//
</div>
<iframe id="download" name="download" height="0px" width="0px"></iframe>
</body>
</html>
ここでは、エクスポート時にページがポップアップしないように、次のように処理します.
1、headにbaseラベルを追加する
<base target="download"/>
2、bodyにiframeを追加する
<iframe id="download" name="download" height="0px" width="0px"></iframe>
バックグラウンドアクション
private String fileName;//
public String getFileName()throws Exception {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
@Override
public String execute() throws Exception {
String expinfo=request.getParameter("expinfo");
if(!ValidateUtil.validateString(expinfo)){
return null;
}
HttpServletResponse resp = ServletActionContext.getResponse();
resp.reset();
resp.setContentType("application/vnd.ms-word;charset=UTF-8");
String strFileName = FileUtil.getFilePrefix(fileName);
strFileName = URLEncoder.encode(strFileName, "UTF-8");
String guessCharset = "gb2312";
strFileName = new String(strFileName.getBytes(guessCharset), "ISO8859-1");
resp.setHeader("Content-Disposition", "attachment;filename=" + strFileName + ".doc");
OutputStream os = resp.getOutputStream();
os.write(expinfo.getBytes(), 0, expinfo.getBytes().length);
os.flush();
os.close();
return null;
}
注意:
1、ファイル名をエンコードする場合、エクスポートできない場合があります.
2、outputstreamに対してwrite操作を実行する場合、3番目のパラメータは必ず1番目のパラメータと一致してください.そうしないと、エクスポート内容が欠落する可能性があります.
すぐに書く
os.write(expinfo.getBytes(), 0, expinfo.getBytes().length);
ではなく
os.write(expinfo.getBytes(), 0, expinfo.length());
原因は簡単です.あなたは知っています.
struts.xmlファイル構成に対応
<action name="rwexp" class="com.xxx.action.RwexpAction"></action>
actionのメソッドでは値を返す必要がないため,ここでは多くの構成を必要としない.