如何将视图导出到 excel ASP.NET MVC
How to export view to the excel ASP.NET MVC
我不是 ASP.NET MVC 专家,但我需要处理一个小项目并需要一些帮助。
基本上我正在做的是一个用于提交或列出一些文本报告的 MVC 项目,我在模型上使用了数据库优先方法。所以我有这个我之前创建的表格模型,但没有做好计划。开始项目后,我碰巧不得不向其中添加一些图像,这在我设计数据模型时并非如此,我通过脱离 MVC 哲学以非常糟糕的方式解决了这个问题,但它有效.
So I added an "img" folder to the project and put the .jpeg files inside.
..我在视图中显示了来自模型的数据中的图像:
...@foreach (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>.......
然后我使用以下代码将该视图导出到 excel 文件:
public ActionResult ExportData()
{
GridView gv = new GridView();
gv.DataSource = 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.DataBind();
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");
}
除图像外,此代码运行良好,因为在 DataSource 上只有模型信息,而我的图像不在模型中,它们位于解决方案内的文件夹中,如上所示。
所以我可以导出除图像之外的视图,我还需要将这些图像导出到 excel 报告。
So this is my view with images
有什么帮助吗?
我用这个class
解决了
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");
}
现在我可以导出像 this:
这样的图像了
我不是 ASP.NET MVC 专家,但我需要处理一个小项目并需要一些帮助。
基本上我正在做的是一个用于提交或列出一些文本报告的 MVC 项目,我在模型上使用了数据库优先方法。所以我有这个我之前创建的表格模型,但没有做好计划。开始项目后,我碰巧不得不向其中添加一些图像,这在我设计数据模型时并非如此,我通过脱离 MVC 哲学以非常糟糕的方式解决了这个问题,但它有效.
So I added an "img" folder to the project and put the .jpeg files inside.
..我在视图中显示了来自模型的数据中的图像:
...@foreach (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>.......
然后我使用以下代码将该视图导出到 excel 文件:
public ActionResult ExportData()
{
GridView gv = new GridView();
gv.DataSource = 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.DataBind();
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");
}
除图像外,此代码运行良好,因为在 DataSource 上只有模型信息,而我的图像不在模型中,它们位于解决方案内的文件夹中,如上所示。
所以我可以导出除图像之外的视图,我还需要将这些图像导出到 excel 报告。
So this is my view with images
有什么帮助吗?
我用这个class
解决了 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");
}
现在我可以导出像 this:
这样的图像了