消息关闭
    暂无新消息!
数据库中有张表Table1,在mvc方法中获取所需的数据存到List<Table1> datalist中,有没有方法直接将数据存到Excel表格中,不用一个字段一个字段的向Excel填充数据?字段名也作为Excel中的第一行数据

6个回答

︿ 1

                   //创建Excel文件的对象(前提:下载NPOI.dll并在项目中引用)
                    NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
                    //添加一个sheet
                    NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");

                    //标题
                    NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
                    row1.CreateCell(0).SetCellValue("标题1");
                    row1.CreateCell(1).SetCellValue("标题2");
                   
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
                        rowtemp.CreateCell(0).SetCellValue(Convert.ToString(dt.Rows[i]["datatable的对应字段名"]));
                        rowtemp.CreateCell(1).SetCellValue(Convert.ToString(dt.Rows[i]["datatable的对应字段名"]));
                    }
                    System.IO.MemoryStream ms = new System.IO.MemoryStream();
                    book.Write(ms);
                    ms.Seek(0, SeekOrigin.Begin);
                    string fileName = "fund(" + starDate+"---"+endDate+").xls";
                    return File(ms, "application/vnd.ms-excel", fileName);
︿ 0

/// <summary>
    /// 将网格数据导出到Excel
    /// </summary>
    /// <param name="ctrl">网格名称(如GridView1)</param>
    /// <param name="FileType">要导出的文件类型(Excel:application/ms-excel)</param>
    /// <param name="FileName">要保存的文件名</param>
    public static void GridViewToExcel(Control ctrl, string FileType, string FileName)
    {
        HttpContext.Current.Response.Charset = "GB2312";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//注意编码
        HttpContext.Current.Response.AppendHeader("Content-Disposition",
            "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
        HttpContext.Current.Response.ContentType = FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 
        ctrl.Page.EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctrl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }


1)前台页面<%@ Page Language="C#" EnableEventValidation="false"  AutoEventWireup="true" CodeFile="CallRecord.aspx.cs" Inherits="_3C_CallManager_CallRecord" %>注意添加EnableEventValidation="false",要不然会报错的。
2)GridView的绑定数据库的代码
     gvRecord.DataSource = VgCallService.GetInfo();//VgCallService.GetInfo()是获取数据库的集合,我是封装好的,根据你们的获取的集合做不同的调整。
        gvRecord.DataBind();
3)点击GridView下一页的关键代码,在PageIndexChanging事件里面
  this.gvRecord.PageIndex = e.NewPageIndex;  //注意这个不能少。
        bind();
4)在导出Excel的按钮事件里面记得先gvRecord.AllowPaging = false;把GridView的分页取消之后,再调用GridViewToExcel方法。
5)下面的不可少。
    public override void VerifyRenderingInServerForm(Control control)
    {
    }