[CustomAuthorize]
        public FileResult ExportQuestionCenterExcel(SearchBaseQuestion search)
        {
            List<EXPORT_BASE_QUESTION> exportBaseQuestionList = new List<EXPORT_BASE_QUESTION>();

try
            {
                search.PageSize = Int32.MaxValue;
                search.Status = DeleteMarkEnum.Active;
                search.isAnswer = IsAnswerEnum.Total;
                search.isReview = IsReviewEnum.Total;
                search.AddOrderBy("MODIFYDATE", SearchOrderType.Desc);
                
                if (search.SOURCE == "0")
                    search.SOURCE = "";
                if (search.MODULE == "0")
                    search.MODULE = "";
                if (search.QUESTIONTYPE == "0")
                    search.QUESTIONTYPE = "";
                if (search.QSTATUS == "0")
                    search.QSTATUS = "";
                if (search.ADMINID == "0")
                    search.ADMINID = "";
                if (!string.IsNullOrEmpty(search.IsSaleQuestion) && search.IsSaleQuestion == "1")
                    search.CUSTOMERMANAGERIDs = GetInPermissionCustomerMannagerIDs();
                 
                IList<BASE_QUESTION> baseQuestionList = questionManager.SearchQuestionList(search);

IList<BASE_CHOICECUSTOMERMANAGER> managerList = customerManagerService.GetChoiceCusManageList();
                SearchChoiceCusManager search_msg = new SearchChoiceCusManager();
                search_msg.SearchType = SearchTypeEnum.Total;
                search_msg.Status = DeleteMarkEnum.Active;
                search_msg.parentIdMany = "samedatakefu";
                IList<BASE_CHOICECUSTOMERMANAGER> choiceManagerList = choiceCusManagerManager.Search(search_msg);

foreach (var baseQuestion in baseQuestionList)
                {
                    //获取受理人
                    string ADMINID_Str = "";
                    if (choiceManagerList != null && choiceManagerList.Count > 0)
                    {
                        BASE_CHOICECUSTOMERMANAGER em = choiceManagerList.Where(m => m.USERID == baseQuestion.ADMINID).FirstOrDefault();
                        if (em != null)
                        {
                            ADMINID_Str = em.NAME;
                        }
                    }
                    BASE_CHOICECUSTOMERMANAGER manager = managerList.FirstOrDefault(t => t.ID == baseQuestion.CUSTOMERMANAGERID);

string strSource = string.Empty;
                    switch (baseQuestion.SOURCE)
                    {
                        case 1:
                            strSource = "QQ";
                            break;
                        case 2:
                            strSource = "Email";
                            break;
                        case 3:
                            strSource = "Online";
                            break;
                        case 4:
                            strSource = "Sales";
                            break;
                        case 5:
                            strSource = "用户直通车";
                            break;
                        case 6:
                            strSource = "需求直通车";
                            break;
                        case 7:
                            strSource = "回访";
                            break;
                        case 8:
                            strSource = "QQ群";
                            break;
                        case 9:
                            strSource = "社区";
                            break;
                        case 10:
                            strSource = "微信群";
                            break;
                        default:
                            strSource = "全部";
                            break;
                    }

exportBaseQuestionList.Add(new EXPORT_BASE_QUESTION() {
                        TITLE = baseQuestion.TITLE == null ? StringConst.NAConst : baseQuestion.TITLE.Count() < 10 ? baseQuestion.TITLE : baseQuestion.TITLE.Substring(0, 10) + "..",
                        MODULE = string.IsNullOrEmpty(baseQuestion.MODULE) ? "" : packageTreeCopy.GetOneById(baseQuestion.MODULE) == null ? "" : packageTreeCopy.GetOneById(baseQuestion.MODULE).FULLNAME,
                        strQUESTIONTYPE = AttributesUtils.GetEnumDescription<QuestionCenterTypeEnum>(baseQuestion.QUESTIONTYPE),
                        USERNAME = baseQuestion.USERNAME,
                        REALNAME = baseQuestion.REALNAME,
                        SOURCE = strSource,
                        ADMINID_Str = ADMINID_Str,
                        strSTATUS = AttributesUtils.GetEnumDescription<QuestionCenterStatusEnum>(baseQuestion.STATUS),
                        JIRAPATH = string.IsNullOrEmpty(baseQuestion.JIRAPATH) ? "" : "<a href='" + JiraIP + baseQuestion.JIRAPATH.Trim() + "' target='blank'>" + baseQuestion.JIRAPATH.Trim() + "</a>",
                        JIRASTATUSName = AttributesUtils.GetEnumDescription<QuestionJiraStatusEnum>(baseQuestion.JIRASTATUS),
                        MODIFYDATE = baseQuestion.MODIFYDATE,
                        KEYWORD = baseQuestion.KEYWORD,
                        customerManagerName = manager == null ? "N/A" : manager.NAME,
                        CREATEDATE = baseQuestion.CREATEDATE,
                        OVERDUETYPE = AttributesUtils.GetEnumDescription<CrmAccountBuyType>(baseQuestion.OVERDUETYPE),
                    });
                }
            }
            catch (Exception ex)
            {
                LogHelper.Instance.Error("ExportQuestionCenterExcel error:", ex);
            }

GridView gvExport = new GridView();
            gvExport.DataSource = exportBaseQuestionList;
            gvExport.AllowPaging = false;
            gvExport.RowDataBound += new System.Web.UI.WebControls.GridViewRowEventHandler(dgExport_RowDataBound);
            gvExport.DataBind();

TableCell[] header = GetTableHeader();
            if (gvExport.HeaderRow != null)
            {
                gvExport.HeaderRow.Cells.AddRange(header);
                GridViewRow row = gvExport.HeaderRow;
                if (row != null)
                {
                    row.Cells[0].Visible = false;
                    row.Cells[1].Visible = false;
                    row.Cells[2].Visible = false;
                    row.Cells[3].Visible = false;
                    row.Cells[4].Visible = false;
                    row.Cells[5].Visible = false;
                    row.Cells[6].Visible = false;
                    row.Cells[7].Visible = false;
                    row.Cells[8].Visible = false;
                    row.Cells[9].Visible = false;
                    row.Cells[10].Visible = false;
                    row.Cells[11].Visible = false;
                    row.Cells[12].Visible = false;
                    row.Cells[13].Visible = false;
                    row.Cells[14].Visible = false;
                }
            }

StringWriter strWriter = new StringWriter();
            HtmlTextWriter htmlWriter = new HtmlTextWriter(strWriter);
            if (exportBaseQuestionList.Count > 0)
            {
                gvExport.RenderControl(htmlWriter);
            }
            else
            {
                strWriter.WriteLine("没有数据!");
            }

byte[] fileContents = Encoding.GetEncoding("gb2312").GetBytes("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=gb2312\">" + strWriter.ToString() + "</body></html>");
            return File(fileContents, "application/vnd.ms-excel", string.Format("{0}.xls", "问题中心" + DateTime.Now.Date.ToString("yyyyMMdd")));
        }

protected static void dgExport_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[6].Text = HtmlDecode(e.Row.Cells[6].Text);
                
                //创建时间
                e.Row.Cells[9].Text = e.Row.Cells[9].Text == "&nbsp;" ? "" : (string.IsNullOrEmpty(e.Row.Cells[9].Text) ? "" : Convert.ToDateTime(e.Row.Cells[9].Text).ToString("yyyy-MM-dd HH:mm:ss"));
                //最后处理时间
                e.Row.Cells[10].Text = e.Row.Cells[10].Text == "&nbsp;" ? "" : (string.IsNullOrEmpty(e.Row.Cells[10].Text) ? "" : Convert.ToDateTime(e.Row.Cells[10].Text).ToString("yyyy-MM-dd HH:mm:ss"));

if (e.Row.Cells[9].Text == "0001-01-01")
                {
                    e.Row.Cells[9].Text = "";
                }

if (e.Row.Cells[10].Text == "0001-01-01")
                {
                    e.Row.Cells[10].Text = "";
                }

e.Row.Cells[13].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
            }
        }

private TableCell[] GetTableHeader()
        {
            TableCell[] header = new TableCell[15];
            for (int i = 0; i < header.Length; i++)
            {
                header[i] = new TableHeaderCell();
            }

header[0].Text = "标题";
            header[1].Text = "来源";
            header[2].Text = "模块";
            header[3].Text = "类型";
            header[4].Text = "账号";
            header[5].Text = "真实姓名";
            header[6].Text = "JIRA地址";
            header[7].Text = "JIRA状态";
            header[8].Text = "账号的状态";
            header[9].Text = "创建时间";
            header[10].Text = "最后处理时间";
            header[11].Text = "受理人";
            header[12].Text = "状态";
            header[13].Text = "标签";
            header[14].Text = "客户经理</th>";

return header;
        }

}

也可以跨列

  header[0].ColumnSpan = 9;
            header[0].Text = "业务信息";

header[1].ColumnSpan = 6;
            header[1].Text = "购买信息";

header[2].ColumnSpan = 5;
            header[2].Text = "查账信息";

header[3].ColumnSpan = 7;
            header[3].Text = "开票信息";

header[4].ColumnSpan = 6;
            header[4].Text = "状态</th></tr><tr>";

//第二行
            header[5].Text = "订单号";

C#通过gridview导出excel的更多相关文章

  1. Asp.net Gridview导出Excel

    前台页面放一个GridView什么的就不说了,要注意的是在 <%@ Page Language="C#" AutoEventWireup="true" C ...

  2. GridView导出Excel的超好样例

    事实上网上有非常多关于Excel的样例,可是不是非常好,他们的代码没有非常全,读的起来还非常晦涩.经过这几天的摸索,最终能够完毕我想要导出报表Excel的效果了.以下是我的效果图. 一.前台的页面图 ...

  3. C#实现GridView导出Excel

    using System.Data;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System. ...

  4. ASP.NET gridview导出excel,防止繁体产生有乱码的方式

    //1.先引用比如 : using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...

  5. GridView导出excel格式问题

    在导出的点击事件中,代码如下: //指定导出对应单元格为文本样式 string style = @"<style> .test { vnd.ms-excel.numberform ...

  6. C# GridView 导出Excel表

    出错1:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内解决方案:在后台文件中重载VerifyRenderingInServerForm方法,如 ...

  7. GridView导出Excel(中文乱码)

    public void OUTEXCEL(string items,string where) { DataSet ds = new StudentBLL().GetTable(items,where ...

  8. GridView导出Excel

    public void OUTEXCEL() { DataSet ds = new GW_T_DemandDAL().GetWzH(GetPersonInfoData(UserInfo), Reque ...

  9. GridView 导出Excel

    protected void btnExcel_Click(object sender, EventArgs e) { ) { ExportGridViewForUTF8(GridView1, Dat ...

随机推荐

  1. 遗传算法详解及c++实现

    1.什么是遗传算法? 遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法.遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一 ...

  2. 洛谷P3812 【模板】线性基

    题目背景 这是一道模板题. 题目描述 给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大. 输入输出格式 输入格式: 第一行一个数n,表示元素个数 接下来一行n个数 输出格式: ...

  3. .net core 基于Claim登录验证

    网站,首先需要安全,实现安全就必须使用登录验证,.net core 基于Claim登录验证就很简单使用. Claim是什么,可以理解为你的身份证的中的名字,性别等等的每一条信息,然后Claim组成一个 ...

  4. .Net core 使用TimeJob

    在我以前的文章中有一个.Net core使用Quartz.Net ,一开始我们的设想就是定时操作数据库,所以有很多实现方法,后来发现TimeJob可以同样实现我们的需求,而且更简便. 所以我们就使用了 ...

  5. input 输入的一些限制说明

    input输入框 只能输入 数字可以有小数点 <input class="form_text" id="purchasePrice" name=" ...

  6. 跨浏览器实现placeholder效果的jQuery插件

    曾经遇到这样一个问题,处理IE8密码框placeholder属性兼容性.几经周折,这个方案是可以解决问题的. 1.jsp页面引入js插件 <script type="text/java ...

  7. canvas常用属性方法由浅下沉

    首先引入<canvas></canvas>标签就不必说了. 其次就是得到canvas的2d环境了( var ctx = canvasDom.getContext('2d') ) ...

  8. 使用gogs和glide来轻松拉取golang第三方库

    golang的第三方代码拉取一直是让人头疼的问题,在github托管的代码还好,托管在其他网站上的代码总会由于大家都懂的原因,无法访问.纵使是github,在拉取文件数量较多的库时,也是比较慢的. 有 ...

  9. epoll 服务端 ET模式

    windows下IOCP, linux下 epoll. epoll模型其实也是一个同步模型,ET是epoll里面的一种模式,叫 边缘触发. 个人理解,类似于 windows下的事件选择模型.代码如下: ...

  10. 贪心算法之Dijkstra

    贪心算法的主要思想就是通过不断求解局部最优解,最后求出最优解或者最优解的近似值,不能保证一定为最优解. Dijistra算法,选取没有选择过的点到已经选择过得点组成的集合中最短的距离的点.然后更新已选 ...