JAvaエクスポートword

4863 ワード

エクスポート機能を実現すると、多くの人が人気のあるフレームワークを選択して完成します.このようにするのは厚かましいことではない.しかし、いくつかの簡単な導出のために一つの枠組みを導入するのは、牛刀で鶏を殺すような感じがします.JAva.ioが独自のインポートエクスポート機能でこれらの簡単な問題を解決できます.また,エクスポートフレームワークもjava.ioに基づく拡張である.
ページの内容を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"/>&nbsp;&nbsp;
					<input type="button" class="btn" value="  " title="  " style="width:60px" onclick="printInfo()"/>&nbsp;&nbsp;				
				</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のメソッドでは値を返す必要がないため,ここでは多くの構成を必要としない.