http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4314|回复: 8

[其他] 关于导出Excel的问题

[复制链接]
发表于 2013-8-23 17:08:54 | 显示全部楼层 |阅读模式
本帖最后由 huhangfei 于 2013-8-23 17:41 编辑

传入的集合,还有每一列的title不能灵活多变,太死。。。。怎么改?
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using org.in2bits.MyXls;

  7. namespace TXManager.Controllers
  8. {
  9.     public class ExcelResult<T> : ActionResult where T : OutputExcel
  10.     {
  11.         public ExcelResult(IList<T> entity, string fileName, string wSheet)
  12.         {
  13.             this.Entity = entity;

  14.             DateTime time = DateTime.Now;
  15.             this.FileName = string.Format("{0}_{1}_{2}_{3}_{4}",
  16.                 fileName, time.Month, time.Day, time.Hour, time.Minute);

  17.             this.WSheet = wSheet;
  18.         }

  19.         public ExcelResult(IList<T> entity)
  20.         {
  21.             this.Entity = entity;

  22.             DateTime time = DateTime.Now;
  23.             this.FileName = string.Format("{0}_{1}_{2}_{3}_{4}",
  24.                 this.FileName, time.Month, time.Day, time.Hour, time.Minute);
  25.         }

  26.         public IList<T> Entity
  27.         {
  28.             get;
  29.             set;
  30.         }

  31.         public string FileName
  32.         {
  33.             get;
  34.             set;
  35.         }
  36.         /// <summary>
  37.         /// 需要生成EXCEL模板 WorkSheet1:约看中  WorkSheet2:
  38.         /// </summary>
  39.         public string WSheet
  40.         {
  41.             get;
  42.             set;
  43.         }
  44.         public override void ExecuteResult(ControllerContext context)
  45.         {
  46.             if (Entity == null)
  47.             {
  48.                 new EmptyResult().ExecuteResult(context);
  49.                 return;
  50.             }

  51.             SetResponse(context);

  52.         }

  53.         /// <summary>
  54.         /// 设置并向客户端发送请求响应。
  55.         /// </summary>
  56.         /// <param name="context"></param>
  57.         private void SetResponse(ControllerContext context)
  58.         {
  59.             XlsDocument xls = new XlsDocument();//创建空xls文档

  60.             xls.FileName = FileName;

  61.             Worksheet sheet = xls.Workbook.Worksheets.AddNamed(this.FileName);

  62.             //设置文档列属性
  63.             ColumnInfo cinfo = new ColumnInfo(xls, sheet);//设置xls文档的指定工作页的列属性

  64.             cinfo.Collapsed = true;
  65.             //设置列的范围 如 0列-10列
  66.             cinfo.ColumnIndexStart = 0;//列开始
  67.             cinfo.ColumnIndexEnd = 10;//列结束
  68.             cinfo.Collapsed = true;
  69.             cinfo.Width = 85 * 65;//列宽度
  70.             sheet.AddColumnInfo(cinfo);
  71.             //设置文档列属性结束
  72.             ConvertEntity(sheet);
  73.             xls.Send();
  74.         }

  75.         /// <summary>
  76.         /// 把泛型集合转换成组合Excel表格的字符串。
  77.         /// </summary>
  78.         /// <returns></returns>
  79.         private void ConvertEntity(Worksheet sheet)
  80.         {

  81.             Cells cells = sheet.Cells; //获得指定工作页列集合

  82.             AddCells(cells);

  83.             AddTableBody(cells);

  84.         }

  85.         public void AddCells(Cells cell)
  86.         {
  87.             switch (this.WSheet)
  88.             {
  89.                 case "WorkSheet1":
  90.                     cell.Add(1, 1, "房源编号");
  91.                     cell.Add(1, 2, "小区名");
  92.                     cell.Add(1, 3, "所在城市");
  93.                     cell.Add(1, 4, "详细地址");
  94.                     cell.Add(1, 5, "支付方式");
  95.                     cell.Add(1, 6, "房东报价");
  96.                     cell.Add(1, 7, "出价时间");
  97.                     cell.Add(1, 8, "真实姓名");
  98.                     cell.Add(1, 9, "手机号码");
  99.                     cell.Add(1, 10, "出价次数");
  100.                     cell.Add(1, 11, "出价金额");
  101.                     cell.Add(1, 12, "");
  102.                     cell.Add(1, 13, "");
  103.                     cell.Add(1, 14, "");
  104.                     break;
  105.                 case "WorkSheet2":
  106.                     cell.Add(1, 1, "");
  107.                     cell.Add(1, 2, "");
  108.                     cell.Add(1, 3, "");
  109.                     cell.Add(1, 4, "");
  110.                     cell.Add(1, 5, "");
  111.                     cell.Add(1, 6, "");
  112.                     cell.Add(1, 7, "");
  113.                     cell.Add(1, 8, "");
  114.                     cell.Add(1, 9, "");
  115.                     cell.Add(1, 10, "");
  116.                     cell.Add(1, 11, "");
  117.                     cell.Add(1, 12, "");
  118.                     cell.Add(1, 13, "");
  119.                     cell.Add(1, 14, "");
  120.                     break;
  121.                 default:
  122.                     break;
  123.             }


  124.         }

  125.         /// <summary>
  126.         /// 根据IList泛型集合中的每项的属性值来组合Excel表格。
  127.         /// </summary>
  128.         /// <param name="sb"></param>
  129.         private void AddTableBody(Cells cells)
  130.         {
  131.             if (Entity == null || Entity.Count <= 0)
  132.             {
  133.                 return;
  134.             }

  135.             int tmepCell = 1;

  136.             foreach (var item in Entity)
  137.             {
  138.                 tmepCell++;
  139.                 cells.Add(tmepCell, 1, item.CellText1);
  140.                 cells.Add(tmepCell, 2, item.CellText2);
  141.                 cells.Add(tmepCell, 3, item.CellText3);
  142.                 cells.Add(tmepCell, 4, item.CellText4);
  143.                 cells.Add(tmepCell, 5, item.CellText5);
  144.                 cells.Add(tmepCell, 6, item.CellText6);
  145.                 cells.Add(tmepCell, 7, item.CellText7);
  146.                 cells.Add(tmepCell, 8, item.CellText8);
  147.                 cells.Add(tmepCell, 9, item.CellText9);
  148.                 cells.Add(tmepCell, 10, item.CellText10);
  149.                 cells.Add(tmepCell, 11, item.CellText11);
  150.                 cells.Add(tmepCell, 12, item.CellText12);
  151.                 cells.Add(tmepCell, 13, item.CellText13);
  152.                 cells.Add(tmepCell, 14, item.CellText14);
  153.             }
  154.         }
  155.     }
  156. }
  157. //-----------
  158. using System;
  159. using System.Collections.Generic;
  160. using System.Linq;
  161. using System.Web;

  162. namespace TXManager.Controllers
  163. {
  164.     public class OutputExcel
  165.     {
  166.         private string _CellText1 = string.Empty;

  167.         public string CellText1
  168.         {
  169.             get { return _CellText1; }
  170.             set { _CellText1 = value; }
  171.         }
  172.         private string _CellText2 = string.Empty;

  173.         public string CellText2
  174.         {
  175.             get { return _CellText2; }
  176.             set { _CellText2 = value; }
  177.         }

  178.         private string _CellText3 = string.Empty;

  179.         public string CellText3
  180.         {
  181.             get { return _CellText3; }
  182.             set { _CellText3 = value; }
  183.         }

  184.         private string _CellText4 = string.Empty;

  185.         public string CellText4
  186.         {
  187.             get { return _CellText4; }
  188.             set { _CellText4 = value; }
  189.         }

  190.         private string _CellText5 = string.Empty;

  191.         public string CellText5
  192.         {
  193.             get { return _CellText5; }
  194.             set { _CellText5 = value; }
  195.         }

  196.         private string _CellText6 = string.Empty;

  197.         public string CellText6
  198.         {
  199.             get { return _CellText6; }
  200.             set { _CellText6 = value; }
  201.         }

  202.         private string _CellText7 = string.Empty;

  203.         public string CellText7
  204.         {
  205.             get { return _CellText7; }
  206.             set { _CellText7 = value; }
  207.         }

  208.         private string _CellText8 = string.Empty;

  209.         public string CellText8
  210.         {
  211.             get { return _CellText8; }
  212.             set { _CellText8 = value; }
  213.         }

  214.         private string _CellText9 = string.Empty;

  215.         public string CellText9
  216.         {
  217.             get { return _CellText9; }
  218.             set { _CellText9 = value; }
  219.         }
  220.         private string _CellText10 = string.Empty;

  221.         public string CellText10
  222.         {
  223.             get { return _CellText10; }
  224.             set { _CellText10 = value; }
  225.         }

  226.         private string _CellText11 = string.Empty;

  227.         public string CellText11
  228.         {
  229.             get { return _CellText11; }
  230.             set { _CellText11 = value; }
  231.         }

  232.         private string _CellText12 = string.Empty;

  233.         public string CellText12
  234.         {
  235.             get { return _CellText12; }
  236.             set { _CellText12 = value; }
  237.         }

  238.         private string _CellText13 = string.Empty;

  239.         public string CellText13
  240.         {
  241.             get { return _CellText13; }
  242.             set { _CellText13 = value; }
  243.         }

  244.         private string _CellText14 = string.Empty;

  245.         public string CellText14
  246.         {
  247.             get { return _CellText14; }
  248.             set { _CellText14 = value; }
  249.         }
  250.     }
  251. }
  252. //----------------------------------
  253.         public ActionResult ExportExcel(SearchAgentComPany search)
  254.         {
  255.             var list = _agentcpbll.SelectComPanylistByPage(search, 1, 10);
  256.             //
  257.             return new ExcelResult<OutputExcel>(list.ConvertAll(it => new OutputExcel() {
  258.                                                     CellText1 = it.Id.ToString(),
  259.                                                     CellText2 = it.Name,
  260.                                                     CellText3 = it.Name,
  261.                                                     CellText4 = it.Address,
  262.                                                     CellText5 = it.Name,
  263.                                                     CellText6 = it.Name,
  264.                                                     CellText7 = it.Name,
  265.                                                     CellText8 = it.Name,
  266.                                                     CellText9 = it.Name,
  267.                                                     CellText10 = it.Name,
  268.                                                     CellText11 = it.CreateTime.ToString()
  269.                                                     }), "约看中", "WorkSheet1");
  270.         }
复制代码


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-23 17:10:57 | 显示全部楼层
你发的代码看到了,那请问你的问题是什么呢?
 楼主| 发表于 2013-8-23 17:11:40 | 显示全部楼层
站长苏飞 发表于 2013-8-23 17:10
你发的代码看到了,那请问你的问题是什么呢?

这个 发帖功能 用起来好吃力啊

发表于 2013-8-23 17:14:04 | 显示全部楼层
具体说说怎么回事,怎么吃力。
 楼主| 发表于 2013-8-23 17:14:59 | 显示全部楼层
站长苏飞 发表于 2013-8-23 17:10
你发的代码看到了,那请问你的问题是什么呢?

  • 传入的集合,还有每一列的title不能灵活多变,太死。。。。怎么改呢
 楼主| 发表于 2013-8-23 17:17:07 | 显示全部楼层
好吧,先说这个发帖功能,
插入代码后,操作什么,才能正常输入普通问题呢?

发表于 2013-8-23 17:27:58 | 显示全部楼层
你下次使用代码之前先转下行,你什么也不做就直接发代码,肯定是占了整个页面,所以找不到输入普通文字的地方了,
你先转个行,就好了。
呵呵
关于导入的这个问题,
我总结的有好多
http://www.sufeinet.com/thread-4-1-1.html
你可以参考下,没必要一个一个的添加的,
 楼主| 发表于 2013-8-23 17:35:37 | 显示全部楼层
站长苏飞 发表于 2013-8-23 17:27
你下次使用代码之前先转下行,你什么也不做就直接发代码,肯定是占了整个页面,所以找不到输入普通文字的地 ...




这样啊,好吧;

站长要是有空吧网站升级一下 版本会更好滴。{:soso_e113:}
发表于 2013-8-23 18:01:08 | 显示全部楼层
huhangfei 发表于 2013-8-23 17:35
这样啊,好吧;

站长要是有空吧网站升级一下 版本会更好滴。

升级到什么版本,你知道我们用的是什么版本吗?
或者你说说要更新什么。
就你刚才说的问题,是你使用问题,不是程序问题呀。
你看看那个网站的编辑器都差不多。你直接贴一下代码肯定是占全部的。

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-23 05:50

© 2014-2021

快速回复 返回顶部 返回列表