概述

在做.Net web开发的过程中经常需要将查出的数据导成Excel表返给用户,方便用户对数据的处理和汇总。这里我将导出Excel表格的代码做一个总结,这也是我项目中经常用到的,代码简单易懂,使用方便,分享给大家。

1、查询数据,数据需要是datatable

后端代码实例,先给Excel表头转化为中文描述

  1. public OperationResult CreateExportExcel(Model queryModel)
  2. {
  3. string errorMsg;
  4. DataSet ds = GetService.RunPRC_ConfirmCompSKD(queryModel, out errorMsg);
  5. if (!string.IsNullOrEmpty(errorMsg))
  6. {
  7. return new OperationResult("", errorMsg);
  8. }
  9. if (ds.Tables.Count != )
  10. {
  11. return new OperationResult("", "查询为空");
  12. }
  13. DataTable dt = ds.Tables[];
  14. dt.Columns.Remove(dt.Columns["DeptID"]);
  15. dt.Columns.Remove(dt.Columns["SearchKey"]);//删除不需要的列
  16. dt.Columns["FYear"].ColumnName = "年份";
  17. dt.Columns["FMonth"].ColumnName = "月份";
  18. dt.Columns["FranchiseeNo"].ColumnName = "编号";
  19. dt.Columns["FranchiseeName"].ColumnName = "名称";
  20. dt.Columns["DeptName"].ColumnName = "维护部门";
  21. dt.Columns["FContractNo"].ColumnName = "合同编号";
  22. dt.Columns["FDate1"].ColumnName = "起租日期";
  23. dt.Columns["FDate2"].ColumnName = "止租日期";
  24. dt.Columns["FNumber"].ColumnName = "收款单编号";
  25. dt.Columns["FAmount"].ColumnName = "收款金额";
  26. dt.Columns["FDate"].ColumnName = "收款日期";
  27. dt.Columns["SkdNo"].ColumnName = "已核销收款单编号";
  28. dt.Columns["SkdAmount"].ColumnName = "已核销收款金额";
  29. dt.Columns["SkdDate"].ColumnName = "已核销收款日期";
  30. return Export(dt, "收款单-");
  31. }
  32.      /// <summary>
  33. /// 生成导出临时文件
  34. /// </summary>
  35. /// <param name="dt"></param>
  36. /// <param name="preName"></param>
  37. /// <returns></returns>
  38. private OperationResult Export(DataTable dt, string preName)
  39. {
  40.  
  41. dt.TableName = preName + DateTime.Now.ToString("yyyyMMddHHmmss");
  42.  
  43. string baseDictory = AppDomain.CurrentDomain.BaseDirectory;
  44.  
  45. string dirctory = string.Format("{0}Doc", baseDictory);
  46.  
  47. if (!Directory.Exists(dirctory))
  48. {
  49. Directory.CreateDirectory(dirctory);
  50. }
  51.  
  52. string path = string.Format("{1}Doc/{0}.xls", dt.TableName, baseDictory);
  53.  
  54. string serverPath = path;
  55.  
  56. if (File.Exists(serverPath))
  57. {
  58. File.Delete(serverPath);
  59. }
  60.  
  61. ExcelUtil.SaveAsExcel(serverPath, preName, dt);
  62.  
  63. bool flag = File.Exists(serverPath);
  64.  
  65. if (!flag)
  66. {
  67. return new OperationResult("", "生成失败");
  68. }
  69.  
  70. var result = new OperationResult("", "success")
  71. {
  72. returnURL = string.Format("/Doc/{0}", Path.GetFileName(serverPath))
  73. };
  74.  
  75. return result;
  76. }
  1. public class OperationResult
  2. {
  3. public OperationResult()
  4. {
  5. }
  6.  
  7. public OperationResult(string errCode, string errMsg)
  8. {
  9. ErrorCode = errCode;
  10. ErrorMsg = errMsg;
  11. }
  12.  
  13. /// <summary>
  14. /// 返回状态
  15. /// </summary>
  16. public bool Flag { get; set; }
  17.  
  18. /// <summary>
  19. /// 返回码
  20. /// </summary>
  21. public string ErrorCode { get; set; }
  22.  
  23. /// <summary>
  24. /// 返回的URL
  25. /// </summary>
  26. public string returnURL { get; set; }
  27.  
  28. /// <summary>
  29. /// 返回消息
  30. /// </summary>
  31. public string ErrorMsg { get; set; }
  32. public object ObjectData { get; set; }
  33. public object rows { get; set; }
  34.  
  35. public int total { get; set; }
  36. /// <summary>
  37. /// 页脚
  38. /// </summary>
  39. public object footer { get; set; }
  40.  
  41. }

前端代码实例:

  1. function outExcel() {
  2. var queryUrl = "/Statistics/D_IComeData/CreateD_MonthIncomeExportExcel";
  3. var queryModel = form2Json("searchform");
  4. $.ajax({
  5. type: "POST",
  6. url: queryUrl,
  7. data: queryModel,
  8. dataType: "JSON",
  9. success: function (result) {
  10. var row = result.rows;
  11. if (Util.isValidResult(row)) {
  12. if (row.hasOwnProperty("returnURL") && row.returnURL != null) {
  13. OpenFrameUrl(row.returnURL);
  14. }
  15. }
  16. }
  17. });
  18. }
  19.  
  20. function OpenFrameUrl(url) {
  21. var form = document.createElement("form");
  22. form.id = "outExcelResult";
  23. form.action = url;
  24. form.method = "get";
  25. document.body.appendChild(form);
  26. form.submit();
  27. document.body.removeChild(form);
  28.  
  29. };

.Net生成导出Excel的更多相关文章

  1. java使用poi生成导出Excel(新)

    导出样式: java代码: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStre ...

  2. 如何用poi生成导出excel

    import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import java. ...

  3. java后台动态生成导出excel

    p ublic void export(List<WechatUser> wechatUserList, HttpServletResponse response) throws IOEx ...

  4. asp.net core webapi 生成导出excel

    /// <summary> /// 下载订单 /// </summary> /// <param name="model"></param ...

  5. 022医疗项目-模块二:药品目录的导入导出-对XSSF导出excel类进行封装

    资源全部来源于传智播客. 好的架构师写的程序,就算给刚入门的新手看,新手一看就知道怎么去用.所以我们要对XSSF导出excel类进行封装.这是架构师的工作,但我们也要知道. 我们写一个封装类: 这个类 ...

  6. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  7. 根据模板导出Excel报表并生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

  8. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  9. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

随机推荐

  1. 为什么重写equals后要重写hashCode

    equals和hashCode的关系 要搞清楚题目中的问题就必须搞明白equals方法和hashCode方法分别是什么,和诞生的原因,当搞明白了这一点其实题目就不算是个问题了,下面我们来探讨分别探讨一 ...

  2. 跟我学算法-吴恩达老师(mini-batchsize,指数加权平均,Momentum 梯度下降法,RMS prop, Adam 优化算法, Learning rate decay)

    1.mini-batch size 表示每次都只筛选一部分作为训练的样本,进行训练,遍历一次样本的次数为(样本数/单次样本数目) 当mini-batch size 的数量通常介于1,m 之间    当 ...

  3. Python 2.75升级3.6.3

    https://blog.csdn.net/wwwdaan5com/article/details/78218277 Centos 7 默认yum安装python 是2.7.5, (网上看了很多升级都 ...

  4. js获取当前项目根路径URL (转自CSDN 红领巾-sunlight)

    /** * //获取当前项目根路径 * @return {TypeName} */ function getRootPath(){ //获取当前网址,如: http://localhost:8083/ ...

  5. 迷你MVVM框架 avalonjs 1.2.5发布

    avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本 ...

  6. WeakHashMap, NOT A CACHE

    Overview Base Map的实现 基于WeakReference的Entity实现 基于Reference和ReferenceQueue实现 它的弱引用是键,而不是值 它的key会被全自动回收 ...

  7. Win7删除远程连接历史记录

    打开注册表,找到 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default 删除右侧的 MRUn(n是索引号) 项 即可.

  8. css中的display(显示)和visibility(可见性)

    display定义和用法 display 属性规定元素应该生成的框的类型. 说明 这个属性用于定义建立布局时元素生成的显示框类型.对于 HTML 等文档类型,如果使用 display 不谨慎会很危险, ...

  9. 如何阅读jdk及开源框架的源码?

    1.熟悉设计模式 可以边读源码 ,边熟悉设计模式,理解编程思想. jdk中对应的设计模式见:http://blog.csdn.net/gtuu0123/article/details/6114197 ...

  10. 接雨水12 · Trapping Rain Water12

    [抄题]: Given n non-negative integers representing an elevation map where the width of each bar is 1, ...