您的位置:首页 > 其它

echart 导出图形报表到excel中

2016-03-29 14:10 573 查看
{
text: '导出',
id:'importExcelFile',
iconCls: 'page_excel',
handler: function () {

var data =  myChart.getDataURL("png");
$("#img").val(data);

var startDate = Ext.isEmpty(Ext.getCmp('startDate'))?"":Ext.util.Format.date(Ext.getCmp('startDate').value,'Y-m-d');
var endDate = Ext.isEmpty(Ext.getCmp('endDate'))?"":Ext.util.Format.date(Ext.getCmp('endDate').value,'Y-m-d');
var startYm = Ext.isEmpty(Ext.getCmp('startYm'))?"":Ext.util.Format.date(Ext.getCmp('startYm').value,'Y-m');
var endYm = Ext.isEmpty(Ext.getCmp('endYm'))?"":Ext.util.Format.date(Ext.getCmp('endYm').value,'Y-m');
var statYm = Ext.isEmpty(Ext.getCmp('statYm'))?"":Ext.util.Format.date(Ext.getCmp('statYm').value,'Y-m');
var statYmd = Ext.isEmpty(Ext.getCmp('statYmd'))?"":Ext.util.Format.date(Ext.getCmp('statYmd').value,'Y-m-d');

var deptName = Ext.isEmpty(Ext.getCmp('deptName'))?"":Ext.getCmp('deptName').value;
var deptOrgId = Ext.isEmpty(Ext.getCmp('deptOrgId'))?"":Ext.getCmp('deptOrgId').value;

<c:if test="${fn:contains(queryCondition, '#startDate#') && fn:contains(queryCondition, '#endDate#')}">
if(!Ext.isEmpty(startDate)&&!Ext.isEmpty(endDate)){
$("#startDate").val(startDate);
$("#endDate").val(endDate);
$("#deptName").val(deptName);
$("#deptOrgId").val(deptOrgId);
$("#exportForm").submit();
}else{
Ext.MessageBox.alert("提示框","时间不能为空!");
}
</c:if>
}
}

<!-- chart -->
<div id="chartsDiv" style="height:350px;margin-top: 10px;"></div>
<script src="../echart/build/dist/echarts-all.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
var myChart;
$(function() {
Ext.Ajax.request({
method:'post',
url: '<%=request.getContextPath()%>/chartDisplay/getChartOptions.do',
params: {
nodeId:${nodeId},
startDate:${startDate},
endDate:${endDate},
startYm:${startYm},
endYm:${endYm},
statYm:${statYm},
statYmd:${statYmd},
deptName:'${deptName}',
deptOrgId:'${deptOrgId}'
},
async: true,
success: function (response)
{
var option = Ext.decode(response.responseText);
myChart = echarts.init(document.getElementById('chartsDiv'));
myChart.setOption(option, true);
}
});

});
</script>

<form id="exportForm" action="<%=request.getContextPath()%>/chartDisplay/exportExcel.do" method="post">
<input type="hidden" name="img" id="img" />
<input type="hidden" name="startDate" id="startDate" />
<input type="hidden" name="endDate" id="endDate" />
<input type="hidden" name="statYm" id="statYm" />
<input type="hidden" name="endYm" id="endYm" />
<input type="hidden" name="statYmd" id="statYmd" />
<input type="hidden" name="deptName" id="deptName" />
<input type="hidden" name="nodeId" id="nodeId" value="${nodeId}" />
<input type="hidden" name="deptOrgId" id="deptOrgId" value="${deptOrgId}" />
<input type="hidden" name="type" id="type" value="${type}"/>
</form>

/**
* 导出excel方法
* @param request
* @param response
*/
@RequestMapping("exportExcel")
public void exportExcel(HttpServletRequest request, HttpServletResponse response){
String data = request.getParameter("img");
String startDate = request.getParameter("startDate");
String endDate = request.getParameter("endDate");
String statYm = request.getParameter("statYm");
String endYm = request.getParameter("endYm");
String statYmd = request.getParameter("statYmd");
String deptName = request.getParameter("deptName");
String deptOrgId = request.getParameter("deptOrgId");
String nodeIdStr = request.getParameter("nodeId");
String type = request.getParameter("type");

QueryCondition queryCondition=new QueryCondition();
if(!StringUtil.isBlank(startDate)){
queryCondition.setStartDate(startDate);
}else if(!StringUtil.isBlank(endDate)){
queryCondition.setEndDate(endDate);
}else if(!StringUtil.isBlank(statYm)){
queryCondition.setStatYm(statYm);
}else if(!StringUtil.isBlank(endYm)){
queryCondition.setEndYm(endYm);
}else if(!StringUtil.isBlank(statYmd)){
queryCondition.setStatYmd(statYmd);
}else if(!StringUtil.isBlank(deptName)){
queryCondition.setDeptName(deptName);
}else if(!StringUtil.isBlank(deptOrgId)){
queryCondition.setDeptOrgId(Integer.valueOf(deptOrgId));
}else if(!StringUtil.isBlank(type)){
queryCondition.setType(Integer.valueOf(type));
}

Integer nodeId = null;
if(!StringUtil.isBlank(nodeIdStr)){
nodeId = Integer.valueOf(nodeIdStr);
}
try {
String userName = System.getProperty("user.name");
String filePath = "C:\\Users\\"+userName+"\\Desktop\\chart";
File file = new File(filePath);
if(!file.exists()){
file.mkdir();
}
String fileName = filePath +"\\"+ System.currentTimeMillis()+".png";
createImage(request, response, fileName, data);
createExcel(request, response, fileName,nodeId,queryCondition);
} catch (Exception e) {
e.printStackTrace();
}

}

public void createImage(HttpServletRequest request, HttpServletResponse response,String fileName, String data)
throws ServletException, IOException {
try {
String[] url = data.split(",");
String u = url[1];
byte[] b = new BASE64Decoder().decodeBuffer(u);
OutputStream out = new FileOutputStream(new File(fileName));
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}

public void createExcel(HttpServletRequest request, HttpServletResponse response, String fileName,Integer nodeId,QueryCondition queryCondition)
throws ServletException, IOException {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = null;
row = sheet.createRow(60);
HSSFCell cells = row.createCell((short) 0);
cells.setCellType(HSSFCell.CELL_TYPE_BLANK);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
BufferedImage bufferImg = ImageIO.read(new File(fileName));
ImageIO.write(bufferImg, "PNG", outStream);
HSSFPatriarch patri = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023,100,(short) 0, 0, (short)7, 22);
patri.createPicture(anchor, wb.addPicture(outStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
try {
OutputStream out = null;
response.setContentType("application/x-msdownload");
String sql = "";
String codedFileName="";
Object[] coloumnNames=new Object[]{};
String[] coloumnFields=new String[]{};
Map<String,Object> map=new HashMap<String, Object>();
if(nodeId!=null){
//1查询出节点对应的报表sql语句
User user = (User) request.getSession().getAttribute(Constant.CUR_USER_SESSION);
map=chartDisplayServiceImp.findQueryCondition(queryCondition, user, nodeId);
Map<String,Object> fieldsMaps = chartDisplayServiceImp.findDisplayFieldNames(map);
coloumnNames = (Object[]) fieldsMaps.get("coloumnNames");
coloumnFields = (String[]) fieldsMaps.get("coloumnFields");
sql = (String)fieldsMaps.get("sqlContent");
String nodeName = (String) fieldsMaps.get("nodeName");
// 进行转码,使其支持中文文件名
codedFileName = java.net.URLEncoder.encode(nodeName, "UTF-8");
}
HSSFCellStyle  style = wb.createCellStyle();
HSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setBoldweight((short) Font.BOLD); //粗体
font.setColor(HSSFColor.BLUE.index);    //绿字
style.setFont(font);
if(queryCondition.getType()!=8){//
//表头
HSSFRow row1 = sheet.createRow(23);
int crossLineNum = chartDisplayServiceImp.exportExcelHeaders(sheet,row1,style,coloumnNames);
//数据部分
List<Map<String,Object>> list = chartDisplayServiceImp.findChartDisplayList(map,sql);
chartDisplayServiceImp.exportExcelDatas(sheet,list,coloumnFields,crossLineNum);
}
response.setHeader("Content-Disposition", "attachment; filename=" +codedFileName+".xls");
out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}


</pre><pre>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: