title: Export DataSet to excel 2007 EPPlus
body: <p>I'm trying to export a DataSet to excel 2007,i cant use the normal code that is used to export using mime types in the contenttype like this "Response.ContentType = "application/ms-excel";"
  If i use mime type for xls i get a warning when a i try to export,i can't have this error because of the clients,so i started using EPPlus,but now i'm having expections erros,like "ArgumentNullException was unhandled by user code".When i'm debbuging i noticed that the variable ds in the  btnExportClick method is null,i think that where the erros is,but i cant understand where,here is the full code:</p>
  
  <pre><code>namespace PortalFornecedores
  {
      public partial class _Default : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
              if (!this.IsPostBack)
              {
                  this.BindGrid();
              }
          }
  
  
          public void BindGrid()
          {
              using (DataSet ds = new DataSet())
              {
                  ds.ReadXml(Server.MapPath("~/Customers.xml"));
                  GridFornecedor.DataSource = ds;
                  GridFornecedor.DataBind();
              }
          }
  
  
  
  
          public void btnExportClick(object sender, EventArgs e)
          {
              DataTable ds = GridFornecedor.DataSource as DataTable;
              ExportExcel(ds);
  
  
          }
  
  
          public void ExportExcel(DataTable ds)
          {
  
              using (ExcelPackage pck = new ExcelPackage())
              {
                  //Create the worksheet
                  ExcelWorksheet ws = pck.Workbook.Worksheets.Add("SearchReport");
  
                  //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
                  ws.Cells["A1"].LoadFromDataTable(ds, true);
  
                  //prepare the range for the column headers
                  string cellRange = "A1:" + Convert.ToChar('A' + ds.Columns.Count - 1) + 1;
  
                  //Format the header for columns
                  using (ExcelRange rng = ws.Cells[cellRange])
                  {
                      rng.Style.WrapText = false;
                      rng.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                      rng.Style.Font.Bold = true;
                      rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
                      rng.Style.Fill.BackgroundColor.SetColor(Color.Gray);
                      rng.Style.Font.Color.SetColor(Color.White);
                  }
  
                  //prepare the range for the rows
                  string rowsCellRange = "A2:" + Convert.ToChar('A' + ds.Columns.Count - 1) + ds.Rows.Count * ds.Columns.Count;
  
                  //Format the rows
                  using (ExcelRange rng = ws.Cells[rowsCellRange])
                  {
                      rng.Style.WrapText = false;
                      rng.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                  }
  
                  //Read the Excel file in a byte array
                  Byte[] fileBytes = pck.GetAsByteArray();
  
                  //Clear the response
                  Response.Clear();
                  Response.ClearContent();
                  Response.ClearHeaders();
                  Response.Cookies.Clear();
  
                  //Add the header &amp; other information
                  Response.Cache.SetCacheability(HttpCacheability.Private);
                  Response.CacheControl = "private";
                  Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
                  Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
                  Response.AppendHeader("Content-Length", fileBytes.Length.ToString());
                  Response.AppendHeader("Pragma", "cache");
                  Response.AppendHeader("Expires", "60");
                  Response.AppendHeader("Content-Disposition",
                  "attachment; " +
                  "filename=\"ExcelReport.xlsx\"; " +
                  "size=" + fileBytes.Length.ToString() + "; " +
                  "creation-date=" + DateTime.Now.ToString("R") + "; " +
                  "modification-date=" + DateTime.Now.ToString("R") + "; " +
                  "read-date=" + DateTime.Now.ToString("R"));
                  Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
  
                  //Write it back to the client
                  Response.BinaryWrite(fileBytes);
                  Response.End();
              }
          }
  
          public override void VerifyRenderingInServerForm(Control control)
          {
              /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
                 server control at run time. */`enter code here`
          }
      }
  </code></pre>