struts2 + extjs4 + poi 根据当前gridPanel内容导出时Excel

如图:点击导出Excel按钮,导出Excel文件

135013_dCQf_735968.jpg

135254_FjYN_735968.jpg


extjs4代码:

/** TODO 导出Excel*/
"schedulergrid button[id=toexcel]" : {
	click : function(button) {
		var grid = this.getGridObj(button);  
		var Tips = Ext.create("FMApp.util.WindowTips");
		if(!grid){
			Tips.error("传入 参数错误");
			return;
		}
		//得到数据集合
		var store=grid.getStore();
		//得到store数据数组
		var gdatas = store.data.items;
		
		var data=[];
		
		//表格数据
		Ext.Array.each(gdatas,function(arr){
			//转换成json
			data.push(Ext.JSON.encode(arr.data));
		});
		//表格表头列名
		var headers = [];
		
		var gheader = grid.getView().getHeaderCt();
		var colcnt = gheader.getColumnCount();
		for(var i=0;i<colcnt;i++){
			var hidden = gheader.getHeaderAtIndex(i).hidden;
			if(!hidden){
				var colname = gheader.getHeaderAtIndex(i).text;
				//转换成json
				headers.push(Ext.JSON.encode(colname)); 
			}
		}
		
		if(data.length>0){
			Ext.Msg.confirm('提示','是否要导出?', function (btn) {
				if (btn == 'yes') {
					var url = http://localhost:8080/StrutsExtjs/action_doExcel;
					var params = {header:"["+headers.join(",")+"]",gdatas:"["+data.join(",")+"]"};
					window.open(url+'?'+Ext.urlEncode(params));

				}
			});
		}else{
			Tips.warn("没有数据,不能执行操作!");
		}
			 
	}
}


Struts2代码:

import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

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;



public class ExcelAction {

	// grid表头
	private String header;
	// grid数据
	private String gdatas;

	/**
	 * 导出xls文件
	 * 
	 * @return
	 */
	public boolean doExcel() {
		//使用 json-lib-2.3-jdk15.jar
		JSONArray jsonHeader = JSONArray.fromObject(header);
		Object[] arrHeader = jsonHeader.toArray();
		
		//表格列表题
		List<String> heads = new ArrayList<String>();
		//第一行为序号,第二行为图标,不导出,所有初始i=2
		for (int i = 2; i < arrHeader.length; i++) {
			heads.add(arrHeader[i].toString());
		}
		//使用 json-lib-2.3-jdk15.jar
		JSONArray jsonArr = JSONArray.fromObject(gdatas);
		Object[] arr = jsonArr.toArray();
		
		int iRow = 1;
		try {
			HSSFWorkbook workbook = new HSSFWorkbook(); // 产生工作簿对象
			HSSFSheet sheet = workbook.createSheet(); // 产生工作表对象
			workbook.setSheetName(0, "Sheet", HSSFWorkbook.ENCODING_UTF_16);
			HSSFRow row = sheet.createRow((short) 0);
			HSSFCell cell = row.createCell((short) 0);

			for (int i = 0; i < heads.size(); i++) {
				cell = row.createCell((short) (i));
				cell.setCellType(HSSFCell.CELL_TYPE_STRING);
				cell.setEncoding(HSSFCell.ENCODING_UTF_16);
				cell.setCellValue(heads.get(i));
			}

			for (int n = 0; n < arr.length; n++) {
				row = sheet.createRow((short) iRow);

				for (int j = 0; j < heads.size(); j++) {
					cell = row.createCell((short) (j));
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);
					cell.setEncoding(HSSFCell.ENCODING_UTF_16);
					cell.setCellValue(arr[n].toString().split(",")[j].split(":")[1]);
				}
				iRow++;
			}
					
			HttpServletResponse response = ServletActionContext.getResponse();
			//通过Response把数据以Excel格式保存   
			response.reset();    
			response.setContentType("application/vnd.ms-excel;charset=UTF-8");   
			try {       
				response.addHeader("Content-Disposition",  "attachment;filename=1223.xls");
				OutputStream out = response.getOutputStream();
				workbook.write(out);
				out.flush();
				out.close();
			} catch (Exception e) {
				e.printStackTrace();    
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}
	

	public String getHeader() {
		return header;
	}
	public void setHeader(String header) {
		this.header = header;
	}

	public String getGdatas() {
		return gdatas;
	}
	public void setGdatas(String gdatas) {
		this.gdatas = gdatas;
	}

}


struts.xml:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<constant name="struts.i18n.encoding" value="utf-8" />
	
	<package name="doexcel" extends="struts-default" namespace="/sche_export">
		<action name="action_*" class="ExcelAction" method="{1}">
		
        </action>   
	</package>
</struts>




转载于:https://my.oschina.net/uglyboy/blog/267734

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值