看样子你使用了FineUI或者ExtJs,这个由于是异步,所以对于下载文件不行, 你可以尝试使用<a href='下载文件地址' target="_blank" />也就是采用超级链接,而不要使用框架自带的Button。
这位兄台说的是正解
使用npoi组件!我刚才写了一个demo,代码不多,你参考一下
IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("A1"); //创建sheet IRow row1 = sheet.CreateRow(0); //创建行 for (int i = 0; i < 10; i++) { row1.CreateCell(i).SetCellValue("create" + i); //创建单元格并给单元格赋值 } IRow row2 = sheet.CreateRow(1); for (int i = 0; i < 8; i++) { row2.CreateCell(i).SetCellValue("delete" + i); } MemoryStream memoryStream = new MemoryStream(); //创建内存流 workbook.Write(memoryStream); //npoi将创建好的工作簿写入到内存流 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "123.xls"); HttpContext.Current.Response.BinaryWrite(memoryStream.ToArray()); HttpContext.Current.Response.End(); memoryStream.Dispose();
具体npoihttps://github.com/tonyqus/npoi/,也有很详细的demo
如何过我从数据库后台查出数据存入datatable,然后怎么把它写入excel呢,NPOI只是简单了解,没有仔细学过,看来的花时间好好弄下,本人菜鸟,要学的还很多啊
@叶落无声1:不管是datatable还是list集合的数据导出excel,都要是要循环创建行和单元格并赋值
@秋壶冰月: 你自己先试着写出来!写不出来,在问我,可以封装方法,循环将datatable的中的数据读取出来,在写单元格中
@秋壶冰月: IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("A1"); //创建sheet
HSSFWorkbook workbook = new HSSFWorkbook();
//HSSFSheet sheet = workbook.CreateSheet("sheet1");
很多的文档显示是这个建立方法,你那种是提示报错啊,取数据存入datatable中是没问题啦,只是创建excel文件时不太懂
@叶落无声1: 有没有引入程序集,引入命名空间啊
@秋壶冰月: 不知道你这个代码是哪个版本,应该是要引用这些吧NPOI.Dll NPOI.POIFS.Dll、NPOI.HSSF.Dll、NPOI.Util.Dll
我在官网下载的包里面只有NPOI.dll有啊,不太清楚这是怎么回事,有没有完整的包文件
@叶落无声1:你邮箱多少啊?我把npoi发到你邮箱中,
@秋壶冰月: 814934226@qq.com 非常感谢!!
@叶落无声1: IWorkbook、ISheel这些个还是报错,是怎么回事呢,该引用的我都引用了啊
@叶落无声1:
直接出现这个事编码的问题吗
接楼上,如果是要动态的生成下载文件,那只能先生成文件了,ajax是下载不了文件的。
你直接Response.Write()不就行了吗
还有link直址指向你的excel文件也行啊