How to Export WebGrid to Pdf in asp.net MVC4 Application………………..
Note: In this topic I will explain How
to Export WebGrid to Pdf in asp.net MVC4 Application.
-- Sql Query.....................................
--In this table TotalMarks Column is computed column
create table StudentMarks
(
RollNo int primary key,
Name varchar(50),
Physics int,
Chemistry int,
Maths int,
TotalMarks as ((Physics+Chemistry)+Maths )
)
First we will open Visual Studio 2012 AFTER THAT following below
steps
Step 1: File -> New Project -> ASP.NET MVC 4 Web Application
And select Internet Application with Razor View engine (as like
below)
Step 2: After that we will add Model1.edmx in
Model like…..
Step 3: Next step we will add Controller
which name is WebGridToPdf and write
code
using System;
using
System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
// using these namespace here
using System.Web.Helpers;
using iTextSharp.text;
using
iTextSharp.text.pdf;
using
WebGridConceptInMvc4.Models;
namespace
WebGridConceptInMvc4.Controllers
{
public class WebGridToPdfController : Controller
{
//
// GET: /WebGridToPdf/
public ActionResult Index()
{
return View();
}
//Add new Action into your
Controller for data in WebGrid
public ActionResult
StudentMarksDetails()
{
List<StudentMark> stumarks = new List<WebGridConceptInMvc4.Models.StudentMark>();
using (testEntities tt = new testEntities())
{
stumarks =
tt.StudentMarks.OrderBy(m => m.RollNo).ToList();
}
return View(stumarks);
}
}
}
Add View for above Action and Design with Strongly typed view
like
Code for
StudentMarksDetails.cshtml................
@model List<WebGridConceptInMvc4.Models.StudentMark>
@{
Layout = null;
ViewBag.Title = "List of
Students";
var grid = new WebGrid(source: Model,
canPage: true, rowsPerPage: 10);
grid.Pager(WebGridPagerModes.All);
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Export WebGrid to
PDF</title>
<style type="text/css">
.tablestyle
{
font-family:Verdana;
font-size: 0.8em;
width: 70%;
display: table;
border-collapse:collapse;
border: solid 2px Black;
background-color:white;
}
.tablestyle td, th
{
border: 1px solid #E022C2;
padding: 2px 2px 2px;
}
.wgheader
{
background-color:white ;
color:#ff6a00;
padding-bottom: 4px;
padding-top: 5px;
text-align: left;
}
.dob
{
color:green;
background-color:lightpink;
}
</style>
</head>
<body>
<table width="90%">
<tr><td>How to export
WebGrid to PDF in Asp.Net Mvc 4.0 </td></tr>
<tr><td>
<div id="mydata">
@grid.GetHtml(
tableStyle:"tablestyle",
headerStyle:"wgheader",
columns:grid.Columns
(
grid.Column(columnName:"RollNo",header:"RollNo"),
grid.Column(columnName:"Name",header:"Name"),
//you Can also apply format
and any Css property with any column
grid.Column("Dob",header:"Date of
Birth",format:
@<text>@item.Dob.ToString("dd-MMM-yyyy
HH:mm")</text>,style: "dob",canSort:false),
grid.Column(columnName:"Physics", header:"Physics"),
grid.Column(columnName:"Chemistry", header:"Chemistry"),
grid.Column(columnName:"Maths", header:"Maths"),
grid.Column(columnName:"TotalMarks", header:"Total
Marks",canSort:false)
))
</div>
</td></tr>
<tr><td>Export Data : @Html.ActionLink("Get PDF ","GetPdf","WebGridToPdf")</td></tr>
@*with Action Link
(string name, Method Name,Controller Name)*@
</table>
</body>
</html>
Before going to add Action for get PDF to WebGrid we need to add ItextSharp .ddl and add ItextSharpxmlworker
.ddl in our project
How to add both ddl in our project given below from Internet
Here I have added "GetPdf"
Action into "WebGridToPdf" Controller. Please write this following code import following...
//
How to convert WebGrid to Pdf…………………………..
public FileStreamResult GetPdf()
{
List<StudentMark> stumarks = new List<StudentMark>();
using (testEntities tt = new testEntities())
{
stumarks =
tt.StudentMarks.OrderBy(m => m.RollNo).ToList();
}
WebGrid wd = new WebGrid(source: stumarks,
canPage: false, canSort: false);
string griddata =
wd.GetHtml(
columns: wd.Columns
(
wd.Column(columnName: "RollNo", header: "RollNo"),
wd.Column(columnName: "Name", header: "Name"),
wd.Column(columnName: "Dob", header: "Dob"),
wd.Column(columnName: "Physics", header: "Physics"),
wd.Column(columnName: "Chemistry", header: "Chemistry"),
wd.Column(columnName: "Maths", header: "Maths"),
wd.Column(columnName: "TotalMarks", header: "Total
Marks")
)
).ToString();
string exportData = String.Format("<html><head>{0}</head><body>{1}</body></html>", "<style>table{
border-spacing: 10px; border-collapse: separate; }</style>",griddata);
var bytes =
System.Text.Encoding.UTF8.GetBytes(exportData);
using (var input = new MemoryStream(bytes))
{
var output = new MemoryStream();
var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 50,
50);
var writer = PdfWriter.GetInstance(document,
output);
writer.CloseStream = false;
document.Open();
var xmlWorker =
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
xmlWorker.ParseXHtml(writer,
document, input, System.Text.Encoding.UTF8);
document.Close();
output.Position = 0;
return new FileStreamResult(output, "application/pdf");
}
}
And how to set title in top of page in pdf.
ReplyDeleteHow to increase column width in pdf.
ReplyDelete