Hi fareed.fd7,
You can make it by using iTextSharp.
Refer the below link for your understanding how to export DataSet or DataTable to Excel PDF or CSV format.
Export DataSet or DataTable to Word Excel PDF and CSV Formats
Also refer below sample code for your reference and implement it in your code as per your code logic.
HTML
<div>
<asp:Button Text="Export" ID="btnExport" runat="server" OnClick="ExportToPDF" />
</div>
C#
protected void ExportToPDF(object sender, EventArgs e)
{
// You can call your DataTable binding code here where you are taking multiple DataTables.
string strConnString = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand(@"SELECT Top 10 CustomerID,CompanyName,ContactName,ContactTitle FROM Customers
SELECT Top 10 OrderID,CustomerID,EmployeeID,OrderDate,RequiredDate FROM Orders ");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds);
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
for (int i = 0; i < ds.Tables.Count; i++)
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
pdfDoc.NewPage();
GridView dummyGridView1 = new GridView();
dummyGridView1.AllowPaging = false;
dummyGridView1.DataSource = ds.Tables[i];
dummyGridView1.DataBind();
dummyGridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
htmlparser.Parse(sr);
}
}
}
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=MutipleDataTable.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
VB.Net
Protected Sub ExportToPDF(sender As Object, e As EventArgs)
' You can call your DataTable binding code here where you are taking multiple DataTables.
Dim strConnString As String = ConfigurationManager.ConnectionStrings("ConStr").ConnectionString
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand("SELECT Top 10 CustomerID,CompanyName,ContactName,ContactTitle FROM Customers " + _
"SELECT Top 10 OrderID,CustomerID,EmployeeID,OrderDate,RequiredDate FROM Orders ")
Dim sda As New SqlDataAdapter()
cmd.Connection = con
sda.SelectCommand = cmd
Dim ds As New DataSet()
sda.Fill(ds)
Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F)
Dim htmlparser As New HTMLWorker(pdfDoc)
PdfWriter.GetInstance(pdfDoc, Response.OutputStream)
pdfDoc.Open()
For i As Integer = 0 To ds.Tables.Count - 1
Using sw As New StringWriter()
Using hw As New HtmlTextWriter(sw)
pdfDoc.NewPage()
Dim dummyGridView1 As New GridView()
dummyGridView1.AllowPaging = False
dummyGridView1.DataSource = ds.Tables(i)
dummyGridView1.DataBind()
dummyGridView1.RenderControl(hw)
Dim sr As New StringReader(sw.ToString())
htmlparser.Parse(sr)
End Using
End Using
Next
pdfDoc.Close()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment;filename=MutipleDataTable.pdf")
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Write(pdfDoc)
Response.[End]()
End Sub
Public Overrides Sub VerifyRenderingInServerForm(control As Control)
' Verifies that the control is rendered
End Sub
Screenshot
