ext导出excel JAVA_Extjs 导出excel

1前台响应

onExcelBtnClick: function(button, e, eOpts) {

var gridpanel = this.getRunGrid();

var cm=gridpanel.columns;

//封装表格数据

var data=[];

var store = gridpanel.getStore();

store.each(function(record){

data.push(record.data);

},this);

//获取表头的dataIndex

var headerIndex=[];

Ext.Array.forEach( cm, function(item){

if (item.xtype == "gridcolumn"&&!item.isHidden()) {

headerIndex.push(item.dataIndex);

}

});

//获取表头的Text

var headText=[];

Ext.Array.forEach( cm, function(item){

if (item.xtype == "gridcolumn"&&!item.isHidden()) {

headText.push(item.text);

}

});

if (!Ext.fly('frmDummy')) {

var frm = document.createElement('form');

frm.id = 'frmDummy';

frm.name = gridpanel.getId();

frm.className = 'x-hidden';

document.body.appendChild(frm);

}

Ext.Ajax.request({

disableCaching: true ,

url: '../../sys/MyExportExcel!exportExcel.action',

method: 'POST',

isUpload: true,

form: Ext.fly('frmDummy'),

params: {

excleData:Ext.JSON.encode(data),

excleHeader:Ext.JSON.encode(headerIndex),

excleText:Ext.JSON.encode(headText)

}

});

}

2 后台解析数据

package com.kl.action.sys;

import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

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.convention.annotation.Action;

import org.apache.struts2.convention.annotation.Namespace;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.interceptor.ServletResponseAware;

import org.apache.struts2.interceptor.SessionAware;

import com.kl.action.ParentAction;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/sys")

@Action(value = "MyExportExcel")

public class ExportExcel extends ActionSupport  implements

ServletRequestAware, ServletResponseAware {

private String excleData;

private String excleHeader;

private String excleText;

protected HttpServletRequest request;

protected HttpServletResponse response;

public String getExcleData() {

return excleData;

}

public void setExcleData(String excleData) {

this.excleData = excleData;

}

public String getExcleHeader() {

return excleHeader;

}

public void setExcleHeader(String excleHeader) {

this.excleHeader = excleHeader;

}

public String getExcleText() {

return excleText;

}

public void setExcleText(String excleText) {

this.excleText = excleText;

}

public void exportExcel(){

JSONArray excle = JSONArray.fromObject(this.excleData);

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet();

// 解析表头

JSONArray dataHeader = JSONArray.fromObject(this.excleText);

HSSFRow headrow = sheet.createRow(0);

for (int col = 0; col 

String mycell = dataHeader.getString(col);

HSSFCell cell = headrow.createCell(col);

// 定义单元格为字符串类型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在单元格中输入一些内容

cell.setCellValue(mycell);

}

int r=0;

for(Object o : excle) {

JSONObject excleObj = (JSONObject)o;

HSSFRow row=sheet.createRow((short)r+1);

//解析列

JSONArray dataIndex = JSONArray.fromObject(this.excleHeader);

for(int col=0;col

String mycell=dataIndex.getString(col);

mycell=excleObj.getString(mycell);

HSSFCell cell = row.createCell(col);

// 定义单元格为字符串类型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在单元格中输入一些内容

cell.setCellValue(mycell);

}

r++;

};

//通过Response把数据以Excel格式保存

response.reset();

response.setContentType("application/msexcel;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

try {

response.addHeader("Content-Disposition", "attachment;filename=\""

+ new String(("test" + ".xls").getBytes("UTF-8"),

"ISO8859_1") + "\"");

OutputStream out = response.getOutputStream();

workbook.write(out);

out.flush();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void setServletResponse(HttpServletResponse response) {

this.response = response;

}

@Override

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

}

示例依赖apache  poi组件

请参考 官方案例和参考文档

运行结果:

7d04b2f457767c5937f5e29e1a51d52b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值