2017-05-28 10 views
0

Ich bin kein ASP.NET MVC-Experte, aber ich muss ein kleines Projekt behandeln und Hilfe benötigen.So exportieren Sie Ansicht in die Excel ASP.NET MVC

Im Grunde mache ich ein MVC-Projekt zum Einreichen oder Auflisten einiger Textberichte, und ich habe den ersten Ansatz der Datenbank auf dem Modell verwendet. Also habe ich dieses Modell der Tabellen, die ich vorher erstellt habe, ohne einen guten Plan zu machen. Nach dem Start des Projekts war ich gezwungen, einige Bilder hinzuzufügen, was kein Fall war, als ich das Datenmodell entwarf, und ich löste dieses Problem auf sehr schlechte Weise, indem ich aus der MVC-Philosophie herausging, aber es funktionierte .

So I added an "img" folder to the project and put the .jpeg files inside.

..und zeigte ich die Bilder in Ansicht wie bei den Daten aus dem Modell kommen:

[email protected] (var item in Model) { 
<tr> 
    <td>    
     <img src="~/img/@string.Format("{0}.jpeg",item.emailid)"/> 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.emailid) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.date) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.task1) 
    </td>....... 

Und dann exportierte ich diese Ansicht auf die Excel-Datei mit diesem Code:

Dieser Code funktionierte gut außer dem Bild, weil auf DataSource gibt es nur Modellinformationen und meine Bilder sind nicht in Model, sie sind in einer folde r innerhalb der Lösung wie oben gezeigt.

So kann ich meine Ansicht mit Ausnahme von Bildern exportieren und ich muss diese Bilder auch Excel-Bericht erhalten.

So this is my view with images

Jede Hilfe?

+1

Warum Sie Client-Seite Export nicht durch die Verwendung eines HTML-Tabelle Export verwenden? – msd

Antwort

0

Ich löste es mit dieser Klasse

 public ActionResult ExportData() 
    { 
     GridView gv = new GridView(); 
     var data = db.web_weeklyreports.Include(w => w.web_kategori).Include(w => w.web_kategori1).Include(w => w.web_kategori2).Include(w => w.web_kategori3).Include(w => w.web_kategori4).ToList(); 

     gv.AutoGenerateColumns = false; 
     gv.Columns.Add(new ImageField { HeaderText="IMG", DataImageUrlField = "Imagepath", DataImageUrlFormatString = "https://localhost:44353/img/{0}.jpeg", }); 
     gv.Columns.Add(new BoundField { HeaderText="ID", DataField = "ID" }); 
     gv.Columns.Add(new BoundField { HeaderText="Email", DataField = "emailid" }); 
     gv.Columns.Add(new BoundField { HeaderText="Date", DataField = "date" }); 
     gv.Columns.Add(new BoundField { HeaderText="Task 1", DataField = "task1" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "t1kategoriid" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "task2" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "t2kategoriid" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "task3" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "t3kategoriid" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "task4" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "t4kategoriid" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "task5" }); 
     gv.Columns.Add(new BoundField { HeaderText="", DataField = "t5kategoriid" }); 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("Imagepath"); 
     dt.Columns.Add("ID"); 
     dt.Columns.Add("emailid"); 
     dt.Columns.Add("date"); 
     dt.Columns.Add("task1"); 
     dt.Columns.Add("t1kategoriid"); 
     dt.Columns.Add("task2"); 
     dt.Columns.Add("t2kategoriid"); 
     dt.Columns.Add("task3"); 
     dt.Columns.Add("t3kategoriid"); 
     dt.Columns.Add("task4"); 
     dt.Columns.Add("t4kategoriid"); 
     dt.Columns.Add("task5"); 
     dt.Columns.Add("t5kategoriid"); 

     foreach (var item in data) 
     {     
      dt.Rows.Add(item.emailid, item.ID, item.emailid, item.date, item.task1, item.t1kategoriid, item.task2, item.t2kategoriid, item.task3, item.t3kategoriid, item.task4, item.t4kategoriid, item.task5, item.t5kategoriid);     
     } 

     gv.DataSource = dt; 
     gv.DataBind(); 

     for (int i = 0; i < data.Count; i++) 
     { 
      gv.Rows[i].Height = 40; 
     } 

     Response.ClearContent(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment; filename=WeeklyReports.xls"); 
     Response.ContentType = "application/ms-excel"; 
     Response.Charset = ""; 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter htw = new HtmlTextWriter(sw); 
     gv.RenderControl(htw); 
     Response.Output.Write(sw.ToString()); 
     Response.Flush(); 
     Response.End(); 

     return RedirectToAction("adminreports"); 
    } 

Jetzt kann ich Bilder exportieren wie this:

Verwandte Themen