Dear, I need your help, I am developing an asp.net webform, c #, MySQL and itextsharp report and I need this report to have a certain format. I retrieve the information through the database and keep it in a datatable
, until there is everything right, but what I need is to manipulate the datatable
in such a way, that the information can be extracted by items, such as in the following images, all in the same file.
The fields in the database table are practically the same as those in the images. So far I can only get the complete table that retrieves me from the database.
private DataTable GetData(MySqlCommand cmd)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.
ConnectionStrings["Conexion"].ConnectionString;
MySqlConnection con = new MySqlConnection(strConnString);
MySqlDataAdapter sda = new MySqlDataAdapter();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}
protected void ExportPDF_Click(object sender, EventArgs e)
{
string strQuery = "sp_exportarPDFInventario";
string Empresa = ddlEmpresa.SeletedItem.Value;
MySqlCommand cmd = new MySqlCommand(strQuery);
DataTable dt = GetData(cmd);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
StringBuilder sb = new StringBuilder();
sb.Append("<table width='100%'>");
sb.Append("<tr><td align='center' style='background-color: #A9F5F2' colspan = '1'><b>R E V A L O R I Z A C I O N E S Y D E P R E C I A C I O N E S</b></td></tr>");
sb.Append("<hr/>");
sb.Append("<tr><td colspan = '2'></td></tr>");
sb.Append("<tr><td><b>EMPRESA: </b>");
//sb.Append(Empresa);
sb.Append("</td><td align = 'right'><b>AÑO DE PROCESO: </b>");
sb.Append(DateTime.Now.ToString("yyyy"));
sb.Append(" </td></tr>");
sb.Append("<tr><td colspan = '2'><b>CATEGORIA: </b>");
//sb.Append(Categoria);
sb.Append("</td></tr>");
sb.Append("</table>");
sb.Append("<hr/>");
sb.Append("<table width='100%' border = '1px'>");
sb.Append("<tr>");
foreach (DataColumn column in dt.Columns)
{
sb.Append("<th style='background-color: #CEF6CE'>");
sb.Append(column.ColumnName);
sb.Append("</th>");
}
sb.Append("</tr>");
foreach (DataRow row in dt.Rows)
{
sb.Append("<tr>");
foreach (DataColumn column in dt.Columns)
{
sb.Append("<td>");
sb.Append(row[column]);
sb.Append("</td>");
}
sb.Append("</tr>");
}
var x = dt.AsEnumerable().Select(r => Convert.ToInt32(r.Field<int>("VALOR COMPRA"))).Sum();
sb.Append("<tr><td style='background-color: #CEF6CE' align = 'right' colspan = '5'");
sb.Append(dt.Columns.Count - 1);
sb.Append("'>TOTAL</td>");
sb.Append("<td>");
sb.Append(x);
sb.Append("</td>");
sb.Append("</tr></table>");
StringReader sr = new StringReader(sb.ToString());
Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=DataTable.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}