Mostrando entradas con la etiqueta Office. Mostrar todas las entradas
Mostrando entradas con la etiqueta Office. Mostrar todas las entradas

viernes, 20 de septiembre de 2013

Programa de Facturacion V.6

Bueno ya lo termine espero que les guste, lo subo aquí al principio.
Es un archivo .Rar, lo descomprimes y hay un ejecutable denominado Facturacion_6v.exe.
Instalara todo lo nesesario para su funcionamiento.

Como mejora, está el guardar la factura en formato .xlsm y poderse modificar.
He mejorado el inventario, se puede llevar un control de Stock.
Control de Entradas, Salidas.
Se puede llevar la contabilidad, buscar por periodos la contabilidad.

Cualquier duda o futura mejora, aquí estoy.

En breve hare un pequeño tutorial.
Las primeras versiones eran muy simples, creo que no hacia falta muchas explicaciones.Me comento una Amiga que lo usa en el trabajo, que cuando habian muchos clientes al agregar mas clientes iba muy lento, SOLUCIONADO.

Descarga el Archivo Aqui:

sábado, 29 de septiembre de 2012

Reescribiendo metodos de URL en ASP.NET

En este proyecto web lo que haremos sera mostrar una lista de artistas y al seleccionar uno se muestra en la URL y se carga otra pagina:

Primero descargamos el componente URL Rewriter .NET aqui:http://www.dotnetdevelopment.net/tutorials/URLRewriterCompiled.zip Volvemos a nuestro proyecto y vamos a la opcion agregar referencia:
Una vez aqui agregamos la dl

Una vez aqui agregamos la dll que descargamos(Intelligencia.UrlRewriter.dll).
Ahora en el proyecto crearemos una pagina aspx llamada Music.aspx.
Ahora en el Web.config agregamos la siguiente linea debajo del configSection
<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
Ahora agregamos esta linea justo abajo de httpModules
<add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter" />
Ahora la pagina Default.aspx se vera asi:
El codigo de la pagina sera el siguiente
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <h1>Music Page</h1>
        
        <p>Select your favorite artist below.</p>
        
        <ul>
            <li><a href="music.aspx?artist=Beatles">Beatles</a></li>
            <li><a href="music.aspx?artist=Led Zeppelin">Led Zeppelin</a></li>
            <li><a href="music.aspx?artist=Rolling Stones">Rolling Stones</a></li>
        </ul>
    </div>
    </form>
</body>
Como se ve las rutas URL son estructuras URL relativas. Lo que queremos es reescribir la URL original y que se vea asi:

music.aspx?artist=Beatles
music.aspx?artist=Led Zeppelin
music.aspx?artist=Rolling Stones
en la segunda pagina llamada music.aspx se vera asi:
el codigo sera el siguiente:
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    You are visiting the <font color=maroon><b><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></b></font> page. Thank you.
    </div>
    </form>
</body>
nuestro codigo en el Load de la pagina sera este
.vb
'Get query string value
        Dim querystring_value As String = Request.QueryString("artist")
        'Display the retrieve artist value to the page
        Label1.Text = querystring_value.ToUpper()
espero les haya servido el ejemplo.

domingo, 23 de septiembre de 2012

Uso de Hashtable para Checkboxlist en ASP.NET

Para hacer esto escribimos este codigo en el lado del cliente(Default.aspx):
<form id="form1" runat="server">
<div>

<asp:CheckBoxList ID="CheckBoxList1" runat="server">
</asp:CheckBoxList>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<br />
<br />
Text: <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />    
Value:  <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>
</form>
Ahora en el lado del servidor utilizaremos la propiedad IsPostBack en la cual inicializamos nuestro HashTable y lo agregamos a un CheckBox, y en el boton indicaremos que items se dieron check junto con sus IDS.
using System.Collections;
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = string.Empty;
        Label2.Text = string.Empty;
        if (!IsPostBack)
        {
            Hashtable hs = new Hashtable();
            hs.Add("1", "sajjad");
            hs.Add("2", "ahmed");
            hs.Add("3", "imtiaz");
            hs.Add("4", "ghazi");
            hs.Add("5", "sohail");
            hs.Add("6", "zahid");
            hs.Add("7", "irfan");
            CheckBoxList1.DataSource = hs;
            CheckBoxList1.DataValueField = "Key";
            CheckBoxList1.DataTextField = "Value";
            CheckBoxList1.DataBind();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = string.Empty;
        Label2.Text = string.Empty;
        foreach (ListItem listitem in CheckBoxList1.Items)
        {
            if (listitem.Selected)
            {
                Label1.Text += listitem.Text + "     ,     ";
                Label2.Text += listitem.Value + "     ,     ";
            }
        }
    }
}

sábado, 22 de septiembre de 2012

Validar direcciones email usando JQuery en ASP.NET

Veremos aqui una funcionalidad basica para validar direcciones email. En este post, te mostrare como validar direcciones email usando JQuery. Para validar direcciones email, he creado una funcion separada la cual basada en direcciones email, retorna verdadero o falso. La validacion de direcciones email la hacemos utilizando expresiones regulares.
Para implementar este codigo necesitamos escribir codigo como muestro abajo en su pagina aspx(este codigo lo colocan debajo de la etiqueta title)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnValidate").click(function () {
var EmailText = $("#txtEmail").val();
if ($.trim(EmailText).length == 0) {
alert("Please enter email address");
return false;
}
if (validateEmail(EmailText)) {
alert('Valid Email Address');
return true;
}
else {
alert('Invalid Email Address');
return false;
}
});
});
function validateEmail(sEmail) {
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (filter.test(sEmail)) {
return true;
}
else {
return false;
}
}
</script></head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtEmail" runat="server"/>
<asp:Button ID="btnValidate" runat="server" Text="Validate" />
</div>
</form>
</body>
Como ven en el codigo de arriba en la seccion header agregue un link de archivo script, usando ese archivo tenemos una chance de interactuar con JQuery y en el script tenemos la funcion click del boton btnValidate el cual es usado para validar direcciones email usando JQuery en ASP.NET

Truco:Filtrar una cadena y extraer numeros en ASP.NET

En este post explicare como extraer numeros de una cadena de caracteres usando expresiones regulares:
Primero creamos un sitio web y agregamos un Textbox, un boton y un label.
damos doble click en el boton y debajo del evento click escribimos esta funcion:
public string ExtractNumbers(string expr)
    {
        return string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, "[^\\d]"));
    }
y llamamos a esta funcion en el evento click del boton de la siguiente manera:
protected void btnExtract_Click(object sender, EventArgs e)
    {
        lblMessage.Text = ExtractNumbers(txtInput.Text);
    }
y

viernes, 21 de septiembre de 2012

Truco:Importar contactos de Gmail en ASP.NET

Muchas veces necesitamos desarrollar aplicaciones web las cuales requieren importar o extraer contactos de Gmail o del libro de direcciones.
En este ejemplo voy a importar contactos Gmail en una aplicacion web ASP.NET usando C# y VB.NET.
Para empezar necesitamos descargar estas 4 .dll que citare abajo:
  1. Google.GData.Apps.dll
  2. Google.GData.Client.dll
  3. Google.GData.Contacts.dll
  4. Google.GData.Extensions.dll
Pueden conseguirlas descargando la API de Google Data e instalando en el sistema. Pueden bajarlo aqui y consiguen las dlls que les mencione antes.
Creamos un nuevo sitio web en C# y agregamos como referencia estas DLLs.
Pulsamos Aceptar y se agregaran a nuestra carpeta BIN del proyecto, ahora agregamos 2 textbox, un listbox y un boton para importar los contactos.
si gustan el codigo HTML de esta parte aqui les paso:
Email Address :


Password :





Contacts:


Ahora en nuestro codigo de la pagina aspx agregamos las siguientes directivas de abajo:
using Google.Contacts;
using Google.GData.Client;
using Google.GData.Contacts;
using Google.GData.Extensions;
y en el evento Click de nuestro boton agregamos este codigo:
//Provide Login Information
        RequestSettings rsLoginInfo = new RequestSettings("", txtEmail.Text, txtPassword.Text);
        rsLoginInfo.AutoPaging = true; 
        // Fetch contacts and dislay them in ListBox
        ContactsRequest cRequest = new ContactsRequest(rsLoginInfo);
        Feed feedContacts = cRequest.GetContacts();
        foreach (Contact gmailAddresses in feedContacts.Entries)
        {
            Console.WriteLine("\t" + gmailAddresses.Title);
            lstContacts.Items.Add(gmailAddresses.Title);
            foreach (EMail emailId in gmailAddresses.Emails)
            {
                Console.WriteLine("\t" + emailId.Address);
                lstContacts.Items.Add(" " + emailId.Address);
            }
        }
Ejecutan el codigo y al pulsar el boton les saldra su lista de contactos como en la figura:

Resaltar fila de GridView al pasar el puntero con Javascript en ASP.NET

Muchos de nosotros queremos controlar el resaltado de ciertas filas del gridview al pasar el puntero, si utilizamos javascript sera facil y podemos hacerlo con algunas lineas de codigo del lado del servidor.
En este ejemplo he usado color de resaltado verde y el grid es sencillo utilice la BD Northwind agregue un SQLDataSource que contiene un select a una tabla y despues lo llame en Origen de Datos desde el GridView.
en el evento DataBound del GridView agregamos este codigo:
foreach (GridViewRow grow in GridView1.Rows)
        {
            grow.Attributes["onmouseover"] = "highlight(this, true);";
            grow.Attributes["onmouseout"] = "highlight(this, false);";
            HttpResponse myHttpResponse = Response;
            HtmlTextWriter myHtmlTextWriter = new HtmlTextWriter(myHttpResponse.Output);
            grow.Attributes.AddAttributes(myHtmlTextWriter);
        }
espero les haya servido el codigo =)

Mostrar total de suma de columnas de Gridview con evento OnBlur y Javascript en ASP.NET

Encontre este truquito navegando un poco por Internet, para esto primero creamos nuestro GridView:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
            onrowdatabound="GridView1_RowDataBound">
        <Columns>        
 <asp:TemplateField HeaderText="col1">
<ItemTemplate>
<asp:TextBox ID="txtcol1" Text='<%#Eval("id1") %>' runat="server">
</asp:TextBox>
 </ItemTemplate>
 </asp:TemplateField> 
  <asp:TemplateField HeaderText="col2">
<ItemTemplate>
<asp:TextBox ID="txtcol2" Text='<%#Eval("id2") %>' runat="server">
</asp:TextBox>
 </ItemTemplate>
 </asp:TemplateField> 
        </Columns>
        </asp:GridView>   
Ahora creamos nuestra funcion JavaScript:
function JvfunonBlur()
    {
      var grid = document.getElementById('<%=GridView1.ClientID %>');
        var col1;
        var totalcol1 = 0;
        var col2;
        var totalcol2 = 0;         
        for (i = 0; i < grid.rows.length; i++) 
        {
            col1 = grid.rows[i].cells[0];
            col2 = grid.rows[i].cells[1];
            
             for (j = 0; j < col1.childNodes.length; j++) 
             {
                if (col1.childNodes[j].type == "text")
                 {
                 if(!isNaN(col1.childNodes[j].value) &&  col1.childNodes[j].value != "")
                     {
                        totalcol1 += parseInt(col1.childNodes[j].value)
                     }
                }
             }            
             for (j = 0; j < col2.childNodes.length; j++)
             {
                if (col2.childNodes[j].type == "text")
                 {
                     if(!isNaN(col2.childNodes[j].value) &&  col2.childNodes[j].value != "")
                     {
                        totalcol2 += parseInt(col2.childNodes[j].value)
                     }
                }
            }
        }
        document.getElementById('<%=txttotal1.ClientID %>').value = totalcol1;
        document.getElementById('<%=txttotal2.ClientID %>').value = totalcol2;
    }   
Llamamos a esta funcion Javascript en el evento RowDataBound en el codigo de C#, aqui abajo veran el codigo completo junto la funcion que llena el Grid en el evento PostBack.
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            FillGrid();
        }
    }
    private void FillGrid()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("id1", typeof(int));
        dt.Columns.Add("id2", typeof(int));
        dt.Rows.Add(0, 0);
        dt.Rows.Add(0, 0);
        GridView1.DataSource = dt;
        GridView1.DataBind();        
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox txt = (TextBox)e.Row.FindControl("txtcol1");
            txt.Attributes.Add("onBlur", "JvfunonBlur();");
            TextBox txt1 = (TextBox)e.Row.FindControl("txtcol2");
            txt1.Attributes.Add("onBlur", "JvfunonBlur();");
        }
    }
}
Bueno si prefieren pegar el codigo de uno solo aqui esta para la parte .aspx:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
    function JvfunonBlur()
    {
      var grid = document.getElementById('<%=GridView1.ClientID %>');
        var col1;
        var totalcol1 = 0;
        var col2;
        var totalcol2 = 0;         
        for (i = 0; i < grid.rows.length; i++) 
        {
            col1 = grid.rows[i].cells[0];
            col2 = grid.rows[i].cells[1];
            
             for (j = 0; j < col1.childNodes.length; j++) 
             {
                if (col1.childNodes[j].type == "text")
                 {
                 if(!isNaN(col1.childNodes[j].value) &&  col1.childNodes[j].value != "")
                     {
                        totalcol1 += parseInt(col1.childNodes[j].value)
                     }
                }
             }            
             for (j = 0; j < col2.childNodes.length; j++)
             {
                if (col2.childNodes[j].type == "text")
                 {
                     if(!isNaN(col2.childNodes[j].value) &&  col2.childNodes[j].value != "")
                     {
                        totalcol2 += parseInt(col2.childNodes[j].value)
                     }
                }
            }
        }
        document.getElementById('<%=txttotal1.ClientID %>').value = totalcol1;
        document.getElementById('<%=txttotal2.ClientID %>').value = totalcol2;
    }   
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>    
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>  
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>    
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
            onrowdatabound="GridView1_RowDataBound">
        <Columns>        
 <asp:TemplateField HeaderText="col1">
<ItemTemplate>
<asp:TextBox ID="txtcol1" Text='<%#Eval("id1") %>' runat="server">
</asp:TextBox>
 </ItemTemplate>
 </asp:TemplateField> 
  <asp:TemplateField HeaderText="col2">
<ItemTemplate>
<asp:TextBox ID="txtcol2" Text='<%#Eval("id2") %>' runat="server">
</asp:TextBox>
 </ItemTemplate>
 </asp:TemplateField> 
        </Columns>
        </asp:GridView>       
        Total
         <br />
        <asp:TextBox ID="txttotal1" runat="server"></asp:TextBox>
        <asp:TextBox ID="txttotal2" runat="server"></asp:TextBox>
        <br />        
    </ContentTemplate>
    </asp:UpdatePanel>
        </div>
    </form>
</body>
</html>

domingo, 9 de septiembre de 2012

Mostrar un archivo Excel 2003, 2007 en GridView en ASP.NET 2008 con OleDbDataAdapter

He visto muchos ejemplos de como hacer esto pero algunos no funcionan jeje asi que aqui comparto este codigo que si funciona ya sea el archivo excel en diferentes versiones 1997, 2003 o 2007. Lo primero que haremos sera pulsar el boton examinar, buscamos el archivo excel luego lo copiaremos ese archivo al directorio web y de alli crearemos el enlace de la hoja de excel al gridview.
Lo primero sera crear un proyecto web y agregar un scriptmanager, un uploadpanel y dentro de el al gridview para refrescar esa parte y no toda la pagina, tambien agregamos un control FileUpload, un boton y un Label debajo. Estos 3 ultimos controles podemos ponerlos dentro de una tabla y los 2 primeros dentro del grid, personalizando al gridview para darle mayor vistocidad lucira asi:
el codigo que tendra nuestro body sera mas o menos el siguiente:
<body>
    <form id="form1" runat="server">
    <div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" CellPadding="4"
Font-Names="Verdana" Font-Size="Small" ForeColor="#333333">
<RowStyle BackColor="#EFF3FB" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<table>
<tr>
<td><asp:FileUpload ID="fupExcel" runat="server" Font-Names="Verdana"
Font-Size="Small" /></td>
</tr>
<tr>
<td><asp:Button ID="btnUpload" runat="server" Text="Upload" Font-Names="Verdana"
Font-Size="Small" onclick="btnUpload_Click" /></td>
</tr>
<tr>
<td>
    <asp:Label ID="Label1" runat="server"></asp:Label>
    </td>
</tr>
</table>
</div>
    </form>
</body>
para nuestro codigo importamos las siguientes librerias:
using System.Data.OleDb;
using System.IO;
olvide decirles antes de escribir el codigo de abajo para subir el excel, creen una carpeta llamada Invoices dentro de su proyecto, en la misma ruta donde esta su web default1.aspx ya que esta carpeta es la que nos servira para crear el enlace. Una vez dicho esto escriban este codigo dentro del evento click del boton Upload.
if (fupExcel.HasFile)
        {
            try
            {
                HttpFileCollection uploads = HttpContext.Current.Request.Files;
                for (int i = 0; i < uploads.Count; i++)
                {
                    HttpPostedFile upload = uploads[i];
                    if (upload.ContentLength == 0)
                        continue;
                    string c = System.IO.Path.GetFileName(upload.FileName);
                    try
                    {
                        upload.SaveAs(Server.MapPath("Invoices\\") + c);
                    }
                    catch (Exception Exp)
                    {
                        throw (Exp);
                    }
                }
                if (fupExcel.PostedFile != null)
                {
                    HttpPostedFile attFile = fupExcel.PostedFile;
                    int attachFileLength = attFile.ContentLength;
                    if (attachFileLength > 0)
                    {
                        if (fupExcel.PostedFile.ContentLength > 0)
                        {
                            string Extension = Path.GetExtension(fupExcel.PostedFile.FileName);
                            string inFileName = Path.GetFileName(fupExcel.PostedFile.FileName);
                            string pathDataSource = Server.MapPath("Invoices\\") + inFileName;

                            string conStr = "";
                            if (Extension == ".xls" || Extension == ".xlsx")
                            {
                                switch (Extension)
                                {
                                    case ".xls": //Excel 1997-2003
                                        conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + pathDataSource.ToString() + "';" + "Extended Properties=Excel 8.0;";
                                        break;
                                    case ".xlsx": //Excel 2007
                                        conStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source='" + fupExcel.PostedFile.FileName.ToString() + "';" + "Extended Properties=Excel 8.0;";
                                        break;
                                    default:
                                        break;
                                }

                                OleDbConnection connExcel = new OleDbConnection(conStr.ToString());
                                OleDbCommand cmdExcel = new OleDbCommand();
                                OleDbDataAdapter oda = new OleDbDataAdapter();
                                DataTable dt = new DataTable();
                                connExcel.Open();
                                DataSet ds = new DataSet();
                                //Selecting Values from the first sheet
                                //Sheet name must be as Sheet1
                                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Members$]", conStr.ToString());
                                da.Fill(ds);
                                GridView1.DataSource = ds;
                                GridView1.DataBind();
                                if (GridView1.Columns.Count > 0)
                                {
                                }
                                connExcel.Close();
                                if (File.Exists(pathDataSource))
                                {
                                    File.Delete(pathDataSource);
                                }
                            }
                            else
                            {
                                //Show your error in any error controls
                            }
                        }
                        else
                        {
                            fupExcel.Focus();
                            GridView1.DataSource = null;
                            GridView1.DataBind();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        else
            Label1.Text = "Seleccione un archivo";
la variable fupexcel es el control FileUpload que les mencione en un principio. El primer if es para el caso que se presione el boton Upload sin haber seleccionado el archivo Excel. Presionen F5 y les saldra asi:

Exportar data de gridview a PDF en ASP.NET 2008 con ItextSharp

En otros post he puesto ejemplos de como crear un word o un excel a partir de un gridview. Ahora haremos lo mismo para convertir a PDF ya que en ASP.NET no tenemos una caracteristica directa para exportar data del gridview a PDF por esa razon aqui voy a usar una referencia a la libreria ITextSharp. La dll esta disponible busquenla con este nombre itextsharp.dll, crean un proyecto web en visual studio y agregan la referencia al dll asi.
Lo seleccionamos y pulsamos Aceptar.
Ahora en nuestra hoja agregamos una tabla de 2 filas y una columna, en la primera fila agregamos un control ImageButton y en el segundo agregamos un GridView. A nuestro ImageButton le vamos a dar de fondo una imagen PDF para que se vea mas amigable para el usuario, luciendo asi:
para darle este fondo vana la propiedad imageUrl y seleccionan la imagen que debe estar dentro de su proyecto. A nuestro GridView en las propiedades AllowPaging y AllowSorting las ponemos en true y AutoGenerateColumns lo ponemos en false.
Ahora agregamos un SQLDataSource debajo de nuestro gridview:
Configuramos origen de datos y para este ejemplo utilizaremos los campos CompanyName, ContactName, ContactTitle y Address de la tabla Suppliers de la Base Northwind. Pueden hacer select * desde el DataSource, enlazamos al gridview en la propiedad DataSourceID y luego eliminamos las columnas que no deseamos:
Editamos nuestra cadena de conexion del Web.config

        
    
ahora a nuestra ventana de codigo agregamos estas referencias:
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;

y agregan este codigo debajo del load:
public override void VerifyRenderingInServerForm(Control control)
    {
        /* Verifies that the control is rendered */
    }
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
 hw.Write("<b><u>Employee Information</u></b><br/> <br/>");
        GridView1.AllowPaging = false;
        GridView1.DataBind();
        GridView1.RenderControl(hw);
        GridView1.HeaderRow.Style.Add("width", "15%");
        GridView1.HeaderRow.Style.Add("font-size", "10px");
        GridView1.Style.Add("text-decoration", "none");
        GridView1.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
        GridView1.Style.Add("font-size", "8px");
        StringReader sr = new StringReader(sw.ToString());
        Document pdfDoc = new Document(PageSize.A4, 18f, 18f, 18f, 18f);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End();
    }
para este ejemplo descargue el itextsharp.dll la version 4.1.2.0. Se agrego la funcion VerifyRenderingInServerForm para evitar que aparezca este error RegisterForEventValidation can only be called during Render();. Espero les haya servido el codigo.

martes, 21 de agosto de 2012

Truco:Hacer que tu PC te de la bienvenida en Windows

Ves peliculas? Siempre te ha gustado el modo en que las computadoras en las peliculas dan la bienvenida a sus usuarios llamandolos por sus nombres? Te apuesto que tambien te gustaria lograr lo mismo en tu PC haciendo que te de la bienvenida.
Con este truco, puedes hacer que la PC te de la bienvenida con la voz computarizada. Puedes hacer que tu windows te diga "Bienvenido a su PC, usuario"
Haz que windows te de la bienvenido con un mensaje de voz personalizado al arrancar la PC.
Para lograr este truco, sigue las instrucciones de abajo:
  1. Click en Inicio. Anda a Todos los programas, Accesorios y Notepad.
  2. Copia y pega exactamente el codigo de abajo.
  3. Dim speaks, speech
    speaks="Welcome to your PC, Username"
    Set speech=CreateObject("sapi.spvoice")
    speech.Speak speaks
  4. Reemplaza username con tu nombre
  5. Click en el archivo Menu, Guardar como, Seeleccionamos todos los tipos en la opcion Tipo y guardamos el archivo como welcome.vbs o *.vbs
  6. Copiamos el archivo guardado.
  7. Vamos hasta C:\Documents and Settings\All Users\Start Menu\Programs\Startup (in Windows XP) o a C:\Users\ User-Name\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (in Windows 7 and Windows Vista si C: es nuestro driver del sistema.
  8. Pegamos el archivo
Ahora la proxima vez que inicies tu PC, Windows te dara la bienvenida con su voz computarizada.
Para mejores resultados, es recomendable cambiar el tema de sonidos a Sin Sonidos.
Tu puedes cambiar el tema de sonidos a Sin Sonidos siguiendo los siguientes pasos de abajo:
  1. Ir a Panel de Control
  2. Luego click en cambiar a vista clasica.
  3. Luego click en Sonidos y dispositivos de audio.
  4. Luego click en la pestaña sonidos
  5. Seleccionamos Sin Sonidos de la opcion temas de sonido
  6. Si deseas guardar tu version previa de temas de sonido, puedes guardarlo clickeando Yes en el menu popup.
  7. Click en OK

domingo, 12 de agosto de 2012

Exportar a Excel DatagridView en C#.NET 2008, SQL y BD AdventureWorks

Bueno aqui lo que haremos sera exportar una grilla cargada del formulario a Excel:



bueno para eso cargamos la grilla con alguna BD la que deseen yo lo que hice para este ejemplo fue poner este codigo en el evento Load del Form

            string constr = @"Data Source=XSaint;Initial Catalog=AdventureWorks;Integrated Security=True";
            SqlConnection con = new SqlConnection(constr);
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Production.Culture", con);
            DataSet ds = new DataSet();
            da.Fill(ds, "Categories");
            dataGridView1.DataSource = ds.Tables[0];
            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;

            }
Ahora cargamos la referencia:
Pulsamos Aceptar. Ahora escribimos(o copian :D) esta linea
using nmExcel = Microsoft.Office.Interop.Excel;
lo colocan debajo de la llave de namespace WindowsFormsApplication1. y en el evento click del Boton Exportar a Excel ponen este codigo:
nmExcel.ApplicationClass ExcelApp = new nmExcel.ApplicationClass();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Columns.ColumnWidth = 12;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewRow Fila = dataGridView1.Rows[i];
for (int j = 0; j < Fila.Cells.Count; j++)
{
ExcelApp.Cells[i + 1, j + 1] = Fila.Cells[j].Value;
}
}
// ---------- cuadro de dialogo para Guardar
SaveFileDialog CuadroDialogo = new SaveFileDialog();
CuadroDialogo.DefaultExt = "xls";
CuadroDialogo.Filter = "xls file(*.xls)|*.xls";
CuadroDialogo.AddExtension = true;
CuadroDialogo.RestoreDirectory = true;
CuadroDialogo.Title = "Guardar";
CuadroDialogo.InitialDirectory = @"c:\";
if (CuadroDialogo.ShowDialog() == DialogResult.OK)
{
ExcelApp.ActiveWorkbook.SaveCopyAs(CuadroDialogo.FileName);
ExcelApp.ActiveWorkbook.Saved = true;
CuadroDialogo.Dispose();
CuadroDialogo = null;
ExcelApp.Quit();
}
else
{
MessageBox.Show("No se pudo guardar Datos .. ");
}
ahora al presionar el boton les saldra una ventana para que escriban el nombre del archivo Excel.
y cuando abran el documento les saldra como la tabla:

sábado, 11 de agosto de 2012

miércoles, 8 de agosto de 2012

Truco Excel:Listar elementos unicos de una columna, BUSCARV,SUMAR.SI y Combobox

Bueno aqui crearemos un combobox con unos campos de una columna nombre y que al desplegar esta lista nos mostrara ciertos montos de la siguiente forma:

para lograr esto lo primero que tenemos una lista larga que indica personas, con cantidades. Esta lista de personas se repite a lo largo de la lista:

lo primero que hacemos es copiar esta columna larga de nombres a otra columna vacia, y luego nos vamos a Datos > Quitar Duplicados

Una vez aqui le damos click y nos saldra una ventana como esta:
Pulsamos aceptar y nos saldra una ventana similar a esta:
aceptamos y nos quedara una lista mas pequeña:
a esta lista le colocamos numeros a su derecha, para esto escribimos 1,2 y jalamos de donde indica la flecha roja:

ahora para agregar el combobox, vamos a la Pestaña Programador > Insertar > Cuadro Combinado


Ahora lo seleccionamos, lo colocamos en nuestra hoja de trabajo, y le damos click derecho para ir a Formato de Control.
Una vez aqui vamos a la Pestaña Control y cambiamos los valores de Rango de Entrada y de Vincular con la celda por estos:
y ahora al dar click al combo cambiara la celda indicada en Vincular con la celda, ya que esta nos arroja el orden de cada nombre.
Ahora finalmente usaremos la funcion BUSCARV para que al seleccionar un valor del combo nos muestre el nombre y un monto total.
Brevemente explicare los parametros que deben saber para usar esta funcion:

Valor_buscado: se entiende como el criterio que se va a buscar en la primera columna de la matriz de tabla. Valor_buscado puede ser un valor o una referencia. Si valor_buscado es inferior al menor de los valores de la primera columna de matriz_buscar_en, BUSCARV devuelve al valor de error #N/A.

Matriz_buscar_en: Dos o más columnas de datos. Usa una referencia a un rango o un nombre de rango. Los valores de la primera columna de matriz_buscar_en son los valores que busca valor_buscado.

  1. Es importante resaltar que al momento de seleccionar la matriz donde buscaremos la información, el valor referencial debe estar en la primera columna.
  2. Estos valores pueden ser texto, números o valores lógicos. Las mayúsculas y minúsculas del texto son equivalentes

Indicador_columnas: Es el valor del número de columna de matriz_buscar_en desde la cual debe devolverse el valor coincidente. Si el argumento indicador_columnas es igual a 1, la función devuelve el valor de la primera columna del argumento matriz_buscar_en; si el argumento indicador_columnas es igual a 2, devuelve el valor de la segunda columna de matriz_buscar_en y así sucesivamente. Si indicador_columnas es:

  1. Si es inferior a 1, la función Excel BUSCARV devuelve al valor de error #VALUE!
  2. Si es superior al número de columnas de matriz_buscar_en, función Excel BUSCARV devuelve el error #REF!

Bueno ahora para nuestro ejemplo nuestro BUSCARV lo colocamos en una celda vacia y lo escribimos asi:
Ahora con esta celda solo obtenemos los nombres, para obtener los montos de cada uno utilizamos la funcion SUMAR.SI la cual tiene la siguiente sintaxis:
SUMAR.SI(rango;criterio;[rango_suma])
Donde:
rango: contiene el rango de celdas a evaluar
criterio: criterio o condición a cumplir por las celdas que se van a sumar.
rango_suma: son las celdas que se van a sumar. Si se omite, suma las celdas definidas en rango.
en nuestro ejemplo la funcion quedara asi:

y listo. Ahora al dar click en el combo arriba les mostrara el nombre y su monto. Espero este ejemplo les haya servido para aplicaciones similares que tengan. Namaste =)

martes, 26 de junio de 2012

Reemplazar punto y coma por Enter con macros

hola, aqui les traigo un truco que encontre por Internet muy util para reemplazar un punto y coma por enter, por ejemplo si tuvieran correos de la siguiente forma:

borre los correos para proteger la identidad de sus dueños, pero imaginen si tuvieran una lista de 20000 correos separados por punto y coma pero deseamos que esten uno debajo de otro para hacer una lista o cual sea el motivo, seria muy trabajoso separarlos uno a uno, bien para estos casos de listas de correo lo que hacemos es copiar esta lista a Word, una vez aqui pulsamos Alt+F11, se nos abrira el editor de Visual Basic, una vez aqui vamos a Insertar->Modulo

una vez aqui se nos abrira una ventana, lo siguiente que haremos sera escribir esta macro:

Sub reemplazar()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "; "
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
antes de ejecutar esta macro asegurense de haber seleccionado en el Word el texto que desean modificar de lo contrario no pasara nada. Bueno, una vez seleccionado presionan F5 o presionan el triangulo verde y quedaria asi:


en caso no sea punto y coma sino coma u otro caracter solo modifican estas 2 lineas
.Text = "; "
.Replacement.Text = "^p"
^p este caracter es el enter o salto de linea. Aqui colocan el caracter por el que deseen reemplazar, espero les sirva.

jueves, 1 de marzo de 2012

Convertir celda con texto a letra capital en Excel 2007 con macros

esto lo hacemos en caso de que deseemos cambiar el texto a letra capital en varias celdas.
primero vamos a Vista->Macros->Grabar Macro.
Una vez aqui nos saldra una ventana como esta:
en macro3 cambiamos al nombre que deseemos cambiar la macro podria ser CapitalLetter y en Metodo abreviado sera el atajo de teclado que vamos a usar para llamar a la macro (en la casilla en blanco pongan una letra).
ahora presionen el boton de Stop que esta abajo de Libro1.
ahora presionamos ALT+F11 para ir al Editor de Visual Basic. Una vez aqui vamos a la Ventana de Proyectos y vamos a la carpeta Modulos y damos doble click en Modulo1.
una vez aqui nos saldra una ventana como esta.
una vez aqui ponemos antes de End Sub este codigo.
jaxx = ActiveCell.Value 
If VarType(jaxx) = 8 Then 
ActiveCell.Value = WorksheetFunction.Proper(jaxx) 
End If
ActiveCell.Offset(1, 0).Select
OJO que esto lo hacemos habiendo puesto STOP en el paso que esta arriba.
Ahora cierran el editor y prueben escribiendo un texto en una celda y presionando el atajo de teclado que les dije anteriormente deberia salirles asi (en la figura que veran abajo escribi un texto y presione Ctrl+c y resulto)
espero les haya sido util este ejemplo.