2016-06-23 11 views
-1

hat noch keine gute Lösung für den Export ein Gridview in Excel mit folgenden Optionen gefunden:Exportieren Sie eine Rasteransicht nach Excel mit Seitenausrichtung auf Querformat?

Normalen
  • Alle Spalten
  • auf eine Seite passen

    1. Seitenausrichtung auf Landschaft
    2. Margins Vorhandener Code zum Exportieren nach Excel ist wie folgt

      private void ExportToExcel(GridView grdGridView) 
          { 
           DataTable dt = Whatever();    
           grdGridView.AllowPaging = false; 
           grdGridView.Columns[13].Visible = false; 
           grdGridView.DataSource = dt; 
           grdGridView.DataBind(); 
           string attachment = "attachment; filename=ExcelSheet1.xls"; 
           Response.ClearContent(); 
           Response.AddHeader("content-disposition", attachment); 
           Response.ContentType = "application/ms-excel"; 
           StringWriter sw = new StringWriter(); 
           HtmlTextWriter htw = new HtmlTextWriter(sw);   
           HtmlForm frm = new HtmlForm();      // Create a form to contain the grid 
           grdGridView.Parent.Controls.Add(frm); 
           frm.Attributes["runat"] = "server"; 
           frm.Controls.Add(grdGridView); 
           frm.RenderControl(htw); 
           Response.Write(sw.ToString()); 
           Response.End(); 
           } 
      } 
      

      Was könnte der beste Weg sein, nach Excel zu exportieren, um all das zu erreichen? Muss ich eine Bibliothek oder ein anderes Tool wie den Report Viewer verwenden? Ist es möglich oder nicht?

    +0

    Einstellung Können Sie bisher Ihre Forschung teilen? –

    Antwort

    -1

    Gefunden die Lösung

    Download epplus Bibliothek.

    using OfficeOpenXml; 
    
        private void ExportToExcel() 
        { 
    
         using (ExcelPackage objExcelPackage = new ExcelPackage()) 
         { 
    
           //Create the worksheet  
           ExcelWorksheet objWorksheet = objExcelPackage.Workbook.Worksheets.Add("ExcelSheet1"); 
    
          DataTable dtQuoteComparison = dt //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1  
          objWorksheet.Cells["A1"].LoadFromDataTable(dt, true); 
    
    
          var start = objWorksheet.Dimension.Start; 
          var end = objWorksheet.Dimension.End; 
          for (int row = start.Row+1; row <= end.Row; row++) //iterate through rows 
          {      
           objWorksheet.Cells[rowStart, colStart, rowEnd,colEnd].WhateverProperty=value; 
          } 
          objWorksheet.PrinterSettings.Orientation = eOrientation.Landscape; 
          objWorksheet.PrinterSettings.FitToWidth = 1; 
          //Write it back to the client  
          if (System.IO.File.Exists(filepath)) 
           System.IO.File.Delete(filepath); 
    
          //Create excel file on physical disk  
          FileStream objFileStrm = System.IO.File.Create(filepath); 
          objFileStrm.Close(); 
    
          //Write content to excel file  
          System.IO.File.WriteAllBytes(filepath,objExcelPackage.GetAsByteArray()); 
         } 
        } 
    

    nun das Problem, das ich bin vor, dass alle Spalten auf eine Seite passen nicht funktioniert auch nach

    objWorksheet.PrinterSettings.FitToWidth = 1; 
    
    Verwandte Themen