quinta-feira, 13 de novembro de 2008
Criar relatório (.rdlc) na mão
Bom pessoal, nos links disponibilizo uma pequena solução de como criar um relatório .rdlc, ou seja, no formato do report viewer na mão. Bom contei com ajuda de alguns amigos para tal solução, por ser algo muito pouco divulgado ou quase não divulgado. Na verdade nem sabia que isto era possível. Aqui está os links:
Defaul.aspx
terça-feira, 28 de outubro de 2008
Ler e escrever arquivo xml.
Boa tarde pessoal, estou colocando mais um exemplo em asp.net. O exemplo a seguir faz a escrita e a leitura de um arquivo xml. A estrutura utilizada no xml está específico para o caso em que utilizei, mas olhando como foi feito dá para entender e estender para outros casos.
///Bom é isso pessoal, qualquer dúvida só entrar em contato e até a próxima./// Escreve o xml de acordo com o padrão e salva no caminho passado como parâmetro /// /// caminho onde será salvo o arquivo xml public void GravarXml(string caminho) { try { if (File.Exists(caminho)){ File.Delete(caminho); } FileStream fs = new FileStream(caminho, FileMode.Create); XmlWriter w = XmlWriter.Create(fs); w.WriteStartDocument(); w.WriteStartElement("select"); w.WriteElementString("consulta", txtConsulta.Text); w.WriteStartElement("campos"); for (int i = 0; i < campos.Count; i++) { w.WriteStartElement(dgvCampos.Rows[i].Cells["clCampo"].EditedFormattedValue.ToString()); w.WriteElementString("Tipo", ((DataGridViewComboBoxCell)dgvCampos.Rows[i].Cells["clTipo"]).EditedFormattedValue.ToString()); w.WriteElementString("Descricao", ((DataGridViewTextBoxCell)dgvCampos.Rows[i].Cells["clDescricao"]).EditedFormattedValue.ToString()); if (Convert.ToBoolean(((DataGridViewCheckBoxCell)dgvCampos.Rows[i].Cells["clGrid"]).EditedFormattedValue.ToString())) { w.WriteElementString("Grid", "true"); } else w.WriteElementString("Grid", "false"); if (Convert.ToBoolean(((DataGridViewCheckBoxCell)dgvCampos.Rows[i].Cells["clPesquisa"]).EditedFormattedValue.ToString())) { w.WriteElementString("Pesquisa", "true"); } else { w.WriteElementString("Pesquisa", "false"); } w.WriteStartElement("Lookup"); if (this.campos[i].Tipo_LookUp == "D") { w.WriteElementString("Dinâmico", "D"); w.WriteElementString("Select", this.campos[i].Select); } if (this.campos[i].Tipo_LookUp == "E") { w.WriteElementString("Estático", "E"); for (int j = 0; j < this.campos[i].Nome.Count; j++) { w.WriteElementString("Nome", this.campos[i].Nome[j].ToString()); w.WriteElementString("Valor", this.campos[i].Valor[j].ToString()); } } w.WriteEndElement(); w.WriteEndElement(); } w.WriteEndElement(); w.WriteEndElement(); w.WriteEndDocument(); w.Flush(); fs.Close(); } catch (Exception e) { MessageBox.Show(e.Message, "Excessão"); } } ////// Ler o arquvio xml a partir do caminho passado como parâmetro /// /// Caminho do arquivo xml public void LerXml(string caminho) { XmlTextReader r = new XmlTextReader(caminho); while (r.Read()) { if (r.NodeType == XmlNodeType.Element && r.Name == "consulta") { txtConsulta.Text = r.ReadString(); } if (r.NodeType == XmlNodeType.Element && r.Name == "campos") { GeraGrid(); int lin = 0; bool ok = false; string[] linha = new string[1]; while (!ok) { if (r.NodeType == XmlNodeType.Element && r.Name == "Tipo") { dgvCampos.Rows[lin].Cells["clTipo"].Value = r.ReadString(); } if (r.NodeType == XmlNodeType.Element && r.Name == "Descricao") { dgvCampos.Rows[lin].Cells["clDescricao"].Value = r.ReadString(); } if (r.NodeType == XmlNodeType.Element && r.Name == "Grid") { dgvCampos.Rows[lin].Cells["clGrid"].Value = r.ReadString(); } if (r.NodeType == XmlNodeType.Element && r.Name == "Pesquisa") { dgvCampos.Rows[lin].Cells["clPesquisa"].Value = r.ReadString(); } if (r.NodeType == XmlNodeType.Element && r.Name == "Lookup") { r.Read(); if (r.NodeType == XmlNodeType.Element && r.Name == "Dinâmico") { this.campos[lin].Tipo_LookUp =r.ReadString(); r.Read(); this.campos[lin].Select = r.ReadString(); r.Read(); } if (r.NodeType == XmlNodeType.Element && r.Name == "Estático") { this.campos[lin].Tipo_LookUp = r.ReadString(); while (r.Name != "Lookup") { if (r.NodeType == XmlNodeType.Element && r.Name == "Nome") { this.campos[lin].Nome.Add(r.ReadString()); } if (r.NodeType == XmlNodeType.Element && r.Name == "Valor") { this.campos[lin].Valor.Add(r.ReadString()); } r.Read(); } } } if (r.Name != "campos" && r.Name != "Tipo" && r.Name != "Descricao" && r.Name != "Grid" && r.Name != "Pesquisa" && r.Name != "Lookup" && r.NodeType == XmlNodeType.EndElement) { this.campos[lin].Campo = r.Name; lin++; } if (r.NodeType == XmlNodeType.EndElement && r.Name == "campos") { ok = true; } r.Read(); } } } }
quarta-feira, 22 de outubro de 2008
Exportar um datatable para .doc, .xls, .txt, .pdf e .csv
Boa tarde pessoal, abaixo tem alguns métodos que utilizei para exportar um datatable, que na minha aplicação está preenchendo um gridview. Nester métodos abaixo o datatable pode ser exportado para os seguintes formatos: .pdf, .txt, .xls, .doc e .csv.
");
str.Append("
");
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=filename.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Response.Write(str.ToString());
Response.End();
}
///
/// M‚todo que exporta um datatable para documento Word
///
public void ExportarWord()
{
System.Data.DataTable tb = (System.Data.DataTable)Session["tb"];
StringBuilder str = new StringBuilder();
str.Append("Relat¢rio de Itens da Solicita‡Æo
"); int borderWidth = 1; string boldTagStart = ""; string boldTagEnd = ""; str.Append("");
str.Append("
");
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.doc");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.word";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Response.Write(str.ToString());
Response.End();
}
///
/// M‚todo que exporta um datatable para .txt
///
public void ExportarTxt()
{
System.Data.DataTable dt = (System.Data.DataTable)Session["tb"];
StringBuilder str = new StringBuilder();
int[] maior = ObterMaiorString(); //obt‚m o vetor com as colunas com as maiores quantidades de caracteres.
str.Append("-------> RELATàRIO DE Itens da Solicita‡Æo <---------\r\n");
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j <= dt.Columns.Count - 1; j++)
{
int aux = maior[j] - dt.Rows[i][j].ToString().Length;
string espacos = "";
for (int x = 0; x < (maior[j] - dt.Rows[i][j].ToString().Length); x++)
{
espacos += " ";
}
str.Append(dt.Rows[i][j].ToString() + espacos + " ");
}
str.Append("\r\n");
}
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=FileName.txt");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.text";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Response.Write(str.ToString());
Response.End();
}
///
/// M‚todo que exportar um datatable para pdf usando a dll itextsharp
///
public void ExportarPDF()
{
Response.Clear();
Document document = new Document(PageSize.A4.Rotate(), 80, 50, 30, 65);
StringBuilder strData = new StringBuilder(string.Empty);
string strHTMLpath = Server.MapPath("MyHTML.html");
string strPDFpath = Server.MapPath("MyPDF.pdf");
try
{
System.Data.DataTable tb = (System.Data.DataTable)Session["tb"];
StringBuilder str = new StringBuilder();
str.Append("Relat¢rio de Itens da Solicita‡Æo
"); str.Append("");
str.Append("
");
StringWriter sw = new StringWriter();
sw.Write(str);
HtmlTextWriter htw = new HtmlTextWriter(sw);
StreamWriter strWriter = new StreamWriter(strHTMLpath, false, Encoding.UTF8);
strWriter.Write("" + htw.InnerWriter.ToString() + "");
strWriter.Close();
strWriter.Dispose();
iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
styles.LoadTagStyle("ol", "leading", "16,0");
PdfWriter.GetInstance(document, new FileStream(strPDFpath, FileMode.Create));
document.Add(new Header(iTextSharp.text.html.Markup.HTML_ATTR_STYLESHEET, "Style.css"));
document.Open();
ArrayList objects;
styles.LoadTagStyle("li", "face", "garamond");
styles.LoadTagStyle("span", "size", "8px");
styles.LoadTagStyle("body", "font-family", "times new roman");
styles.LoadTagStyle("body", "font-size", "10px");
document.NewPage();
objects = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StreamReader(strHTMLpath, Encoding.Default), styles);
for (int k = 0; k < objects.Count; k++)
{
document.Add((IElement)objects[k]);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
document.Close();
Response.Write(Server.MapPath(".") + "\\MyPDF.pdf");
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment; filename=" + strPDFpath);
Response.ContentType = "application/octet-stream";
Response.WriteFile(Server.MapPath(".") + "\\MyPDF.pdf");
Response.Flush();
Response.Close();
if (File.Exists(Server.MapPath(".") + "\\MyPDF.pdf"))
{
File.Delete(Server.MapPath(".") + \\MyPDF.pdf);
}
}
}
///
/// M‚todo que exporta um datatable para CSV
///
public void ExportarCSV()
{
System.Data.DataTable dt = (System.Data.DataTable)Session["tb"];
StringBuilder str = new StringBuilder();
str.AppendLine("Relat¢rio de Itens da Solicita‡Æo");
foreach (DataColumn oDataColumn in dt.Columns)
{
str.Append(oDataColumn.ColumnName + "");
}
foreach (DataRow oDataRow in dt.Rows)
{
str.AppendLine();
for (int i = 0; i < dt.Columns.Count; i++)
{
str.Append(oDataRow[i] + "");
}
}
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=FileName.csv");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "text/plain";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Response.Write(str.ToString());
Response.End();
}
Percebam que nós métodos acima o datatable estou passando através de uma session chamada session["tb"]. Agraços e até a próxima.
////// M‚todo que exporta um datatable para documento Excel /// public void ExportarExcel() { System.Data.DataTable tb = (System.Data.DataTable)Session["tb"]; StringBuilder str = new StringBuilder(); str.Append("Relat¢rio de Itens da Solicita‡Æo
"); int borderWidth = 1; string boldTagStart = ""; string boldTagEnd = ""; str.Append("
| " + boldTagStart + oDataColumn.ColumnName + boldTagEnd + " | "); } str.Append("|
| " + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } else { str.Append("" + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } } str.Append("
"); int borderWidth = 1; string boldTagStart = ""; string boldTagEnd = ""; str.Append("
| " + boldTagStart + oDataColumn.ColumnName + boldTagEnd + " | "); } str.Append("|
| " + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } else { str.Append("" + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } } str.Append("
"); str.Append("
| " + oDataColumn.ColumnName + " | "); } str.Append("|
| " + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } else { str.Append("" + oDataRow[oDataColumn.ColumnName].ToString() + " | "); } } str.Append("
terça-feira, 30 de setembro de 2008
Assinar:
Postagens (Atom)