struts2中apache的POI控件實現頁面數據導出為excel文件
来源:互联网 发布:出租车计价软件 编辑:程序博客网 时间:2024/06/05 09:16
原理是從頁面點擊鏈接觸發action,并在action方法中從session中取得list。這樣做的缺點是,如果頁面顯示數據時對數據使用了判斷、迭代數據顯示,那麼在action中同樣要去做同樣的工作。而我最理想的方法是將頁面生成的html代碼中的table里的數據直接導入到xls中,這樣就不需再做複雜的業務處理。
JSP頁面添加觸發action鏈接:
<a href="javascript:;" onClick="javascript:toXML();">通過poi導出XLS</a>
javascript函數:
function toXML(){
form1.action = "toXLS.action";
form1.submit();
}
action類:
package biz.ceeport.struts.action;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author winston
* @version CreationTime: 2010-2-25
* @class declaration:
*/
public class DownloadAction extends ActionSupport{
public void toXLS() throws Exception {
List list = (List)ServletActionContext.getRequest().getSession().getAttribute("mylist");
//create HSSFWorkbook
HSSFWorkbook workbook = new HSSFWorkbook();
//create HSSFSheet named user
HSSFSheet sheet = workbook.createSheet("user");
//create row
HSSFRow rowTitle = sheet.createRow(0);
//create cell
HSSFCell cellTitle = rowTitle.createCell((short)(0));
//filled cell
cellTitle.setCellValue(getText("common_activityName"));
cellTitle = rowTitle.createCell((short)1);
cellTitle.setCellValue(getText("common_activityTime2"));
cellTitle = rowTitle.createCell((short)2);
cellTitle.setCellValue(getText("common_signupEndTime"));
cellTitle = rowTitle.createCell((short)3);
cellTitle.setCellValue(getText("common_signupNum"));
for (int i = 0; i < 5; i++) {
HashMap map = (HashMap)list.get(i);
HSSFRow row = sheet.createRow(i+1);
HSSFCell cell = row.createCell((short)0);
cell.setCellValue(map.get("ACTIVITY_NAME").toString());
cell = row.createCell((short)1);
cell.setCellValue(map.get("END_TIME").toString());
cell = row.createCell((short)2);
cell.setCellValue(map.get("SHOW_END_TIME").toString());
cell = row.createCell((short)3);
cell.setCellValue(((HashMap)map.get("SIGNUPPEPOERNUM")).get("NUM").toString());
}
//set response content type
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/vnd.ms-excel");
//set the name of download file
response.addHeader("Content-Disposition","attachment;filename=350000.xls");
//get response stream
OutputStream out=response.getOutputStream();
//add workbook to OutpustStream
workbook.write(out);
out.close();
}
}
struts.xml中:
<!-- 導出xls文檔-->
<action name="toXLS" class="biz.ceeport.struts.action.DownloadAction" method="toXLS">
<result name="success" type="chain">manageActilist</result>
<result name="error">/error.jsp</result>
</action>
測試運行后的結果是正確的,但中文亂碼
在CSDN上找到同類文章,解決了亂碼問題:
http://blog.csdn.net/flyever581549/archive/2008/11/11/3275850.aspx
cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
- struts2中apache的POI控件實現頁面數據導出為excel文件
- struts2+poi实现excel文件的导出
- struts2+poi 导出Excel文件
- Apache POI导出Excel文件
- Apache POI 操作Excel文件
- Apache POI解析Excel文件
- Java中使用Apache POI使用解析excel文件
- 关于struts2中使用POI的方式导出EXCEL文件时的国际化问题
- <学习笔记>Android Studio使用Apache POI在Android中生成.xls的Excel文件
- (2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
- 使用Apache POI生成指定格式的Excel文件
- Apache POI工具对excel文件操作的简单使用
- apache的poi读写excel
- apache的poi读写excel
- apache的poi读写excel
- apache的poi读写excel
- apache的poi读写excel
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- 全角数字转换半角数字工具 v1.0版
- I帧、B帧和P帧的特点和编码的基本流程
- MP3解码技术原理
- UNIX环境高级编程学习之第十章信号-用信号和非局部转移函数写非阻塞的IO函数
- nohup命令详解(转)
- struts2中apache的POI控件實現頁面數據導出為excel文件
- select套接字准备好的条件
- IPC之 - .Net 消息队列(MSMQ) 使用
- 公司绝不会告诉你的10大秘密
- 解决java编程乱码问题
- tomcat wiki上关于整合apache方面的一些faq
- Arm linux 内核移植及系统初始化过程分析-非常好-不得不转
- SQL Server 2005中实现自动备份
- CSDN论坛