1. 首页
  2. 办公

ajax导出excel没反应

本文主要为您介绍ajax导出excel没反应,内容包括用ajax无法实现导出excel怎么解决,用ajax无法实现导出excel怎么解决,用ajax调用以response输出到客户端导出excel不成功,不报错也不提示。public static void queryexcel(String filename,HttpServletRequest req

1. jquery ajax调用后台导出excel,后台顺利跑完无效

public static void queryexcel(String filename,HttpServletRequest request,HttpServletResponse response) throws Exception { HSSFWorkbook workbook = null; //读取表头(表字段名) String[] titles = (String[]) request.getAttribute("titles"); //读取数据库数据 String [] info=(String[]) request.getAttribute("info"); // 创建工作簿实例 workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("sheet1"); workbook.getSheet(null); HSSFFont font = workbook.createFont(); font.setFontName(HSSFFont.FONT_ARIAL); font.setFontHeightInPoints((short)14); HSSFCellStyle style = workbook.createCellStyle(); style.setFont(font); style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中 style.setWrapText(true); //加载表头数据 HSSFRow titleRow = sheet.createRow(0); for (int i = 0; i < titles.length; i++) { HSSFCell cell = titleRow.createCell((short) i); cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置编码 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(titles[i].toString()); } if (info != null) { HSSFRow dataRow = sheet.createRow(1); for (int i = 0; i < info.length; i++) { HSSFCell cell = dataRow.createCell((short)i); sheet.setColumnWidth((short)i, (short)3500); cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置编码 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(info[i]); } } //通过数据流下载工作簿 try { OutputStream out = response.getOutputStream(); response.setHeader("Content-disposition", "attachment;filename="+toUtf8String(filename+".xls")); response.setContentType("text ml;charset=utf-8"); request.setCharacterEncoding("UTF-8"); workbook.write(out); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //中文名 public static String toUtf8String(String s){ StringBuffer sb = new StringBuffer(); for (int i=0;i= 0 && c <= 255){sb.append(c);} else{ byte[] b; try { b = Character.toString(c).getBytes("UTF-8");} catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); }。

2. .net mvc 利用jquery导出controllers层导出excel方法时,为什么不弹出提

思路步骤:

1.JQuery提交到后台程序处理

2.程序处理Excel文件 保存到服务器上tmp文件夹下 比如tmp/201105031129156.xls

3.controllers返回这个文件路径的字符串

4.JQuery的提交回调函数执行打开新窗口 地址就是tmp/201105031129156.xls,然后浏览器就会弹出下载窗口

--------------------------------------------------------------------------------------------

主要是JQuery的ajax提交的方法

$.ajax({

type: "POST",

url:"yourURL",

dataType: "json",

data:"title=" + $('#title').val(), //此处提交参数 controllers需要什么参数就在这里组

success: function(data) {

//data就是controller返回的结果,可以是json的结果 在此处解析

// 也可以是一个字符串,直接使用

//本例中直接window.open()打开一个新窗口用于下载

}

})

-----------------------------------------------------------------------------------------

controller中利用MVC框架中包含了一个特殊的JSONActionResult

[HttpPost]

public ActionResult GetEmployee() {

return Json(new Employee()

{

Id = 1,

Name = "chenxizhang"

});

}

//我觉得本例中,你导出Excel应该没有问题,主要问题处在jquery和mvc的通信

//望采纳

3. 关于将dataset 里面的数据导出成execl的问题

直接导出到Excel会有一些问题,我建议你可以尝试一下代码:

/// <summary>

/// 直接输出Excel

/// </summary>

/// <param name="dtData"></param>

public static void DataTable2Excel(System.Data.DataTable dtData)

{

System.Web.UI.WebControls.DataGrid dgExport = null;

// 当前对话

System.Web.HttpContext curContext = System.Web.HttpContext.Current;

// IO用于导出并返回excel文件

System.IO.StringWriter strWriter = null;

System.Web.UI.HtmlTextWriter htmlWriter = null;

if (dtData != null)

{

// 设置编码和附件格式

curContext.Response.ContentType = "application/vnd.ms-excel";

curContext.Response.ContentEncoding =System.Text.Encoding.UTF8;

curContext.Response.Charset = "";

// 导出excel文件

strWriter = new System.IO.StringWriter();

htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

// 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid

dgExport = new System.Web.UI.WebControls.DataGrid();

dgExport.DataSource = dtData.DefaultView;

dgExport.AllowPaging = false;

dgExport.DataBind();

// 返回客户端

dgExport.RenderControl(htmlWriter);

curContext.Response.Write(strWriter.ToString());

curContext.Response.End();

}

}

本文来自投稿,不代表本站立场,如若转载,请注明出处。