In this article I am going to explain how to export data to
CSV file using Asp.net MVC.
In previous article I have explained how to export data to PDFfile in asp.net MVC, how to export data to Excel file in asp.net MVC and how tocheck uploaded image is Grayscale or not in asp.net.
Description:
Implementation:
Model
public partial class Tb_Movie
{
public int Id { get; set; }
public string Name { get; set; }
public string Genre { get; set; }
public Nullable<int> Budget { get; set; }
}
Add controller
Add empty controller to project. On index method write the code
show the list of movies. After that create new FilecontentResult method to create
and download CSV file.
Complete code of Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC_Project.Models;
using System.IO;
namespace MVC_Project.Controllers
{
public class ExportExcelController : Controller
{
DemoEntities1
db = new DemoEntities1();
//
//
GET: /ExportExcel/
public ActionResult Index()
{
var movielist = db.Tb_Movie.ToList();
return View(movielist);
}
public FileContentResult ExportToCSV()
{
var movie = db.Tb_Movie.ToList();
StringWriter sw = new StringWriter();
sw.WriteLine("\"Id\",\"Movie
Name\",\"Genre\",\"Budget\"");
foreach (var mve in movie)
{
sw.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
mve.Id,
mve.Name,
mve.Genre,
mve.Budget));
}
var fileName = "Movielist" + DateTime.Now.ToString() + ".csv";
return File(new System.Text.UTF8Encoding().GetBytes(sw.ToString()), "text/csv", fileName);
}
}
}
Add view
Now add view for index action.
Complete source of view:
@model IEnumerable<MVC_Project.Models.Tb_Movie>
@{
ViewBag.Title = "Export to CSV";
}
<div class="content">
@Html.ActionLink("ExportCSV", "ExportToCSV", "ExportExcel", new { @class = "btnexport" })
<table>
<tr>
<th>
@Html.DisplayNameFor(model
=> model.Name)
</th>
<th>
@Html.DisplayNameFor(model =>
model.Genre)
</th>
<th>
@Html.DisplayNameFor(model
=> model.Budget)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem
=> item.Name)
</td>
<td>
@Html.DisplayFor(modelItem
=> item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem
=> item.Budget)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
</table>
</div>
<style>
.btn {
border: none;
background: transparent;
}
.content {
min-height: 550px;
}
a.btnexport {
background: url(../images/Export-excel.png) no-repeat ;
display: block;
width: 150px;
height: 45px;
text-indent: -9999px;
}
</style>
No comments:
Post a Comment