zoukankan      html  css  js  c++  java
  • C#通过gridview导出excel

      [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 = "订单号";

  • 相关阅读:
    [K/3Cloud] 首页增加一个自定义页签及页面内容
    [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
    [K/3Cloud] 表单python脚本使用QueryService的做法
    [K/3Cloud]有关单据显示行数限制和数据导出的建议
    [K/3Cloud]实现双击列表行后显示具体的某个单据明细。
    [K/3Cloud]K3Cloud的移动审批方面
    [K/3Cloud]K3Cloud的移动审批方面
    [K/3Cloud]关于数据库sa密码更改,管理中心登录不上的问题。
    游戏编程最前沿....
    marmalade android 5.0 JNI 调用失败的解决方案
  • 原文地址:https://www.cnblogs.com/sojastudio/p/6646046.html
Copyright © 2011-2022 走看看