top of page

EXPORTAR TABLA DE SQL SERVER A DOCUMENTO DE EXCEL

Hacer una consulta de SQL SERVER y exportar esa información en un archivo de EXCEL. Se utiliza un saveFileDialog para preguntar al usuario el directorio donde requiere almacenar el reporte.

se muestran 2 formas de bajara la tabla de SQL,

Referencia necesaria 

Microsoft excel 14.0 Object Library

Microsoft ADO Ext. 6.0 for DDL AND Secruity

Microsoft Activex Data Objects 6.1 Library    

El código es el siguiente.

using System;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel; 

namespace ResumenDeMacros
{
     public class CONEXION
    {

       public bool CrearExcelNuevo()
        {


            string RutaCompleta ="";                 //@"D:\mi documento.xls";
            string laConsulta = "select * from personas";
            string textoCmd = laConsulta;
            string data = null;

            string ipServidor="10.188.xxx.xxx";

            string elUsuario="miusuario";

            string PWD="elpassword"; 

            SqlConnection con = new SqlConnection();

// Preguntar donde guardar el documento exportado y asignarle un nombre

// Agregar primero un saveFileDialog al formulario


            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "xls files (*.xls)|*.xls";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog()==DialogResult.OK)
            {
                if ((myStream=saveFileDialog1.OpenFile())!=null)
                {
                    RutaCompleta = saveFileDialog1.FileName;
                    myStream.Close();
                }
                else
                {
                    MessageBox.Show("Descarga cancelada.");
                    return false;
                }
            }
            else
            {
                MessageBox.Show("Descarga cancelada.");
                return false;
            }

            // se abre conexion  

            con = new SqlConnection("data source=" + ipServidor + ";uid =" + elUsuario + "; PWD=" + elpw + "; initial catalog= BD_especial");
            try
            {
                con.Open();
               
SqlCommand cmd = new SqlCommand(textoCmd, con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);

                Excel.Application xlApp;
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                object misValue = System.Reflection.Missing.Value;

                xlApp = new Excel.Application();
                xlWorkBook = xlApp.Workbooks.Add(misValue);
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

                //PARA LOS ENCABEZADOS
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
                    d
ata = ds.Tables[0].Columns[i].ColumnName;
                    xlWorkSheet.Cells[1, i + 1] = data;

                }

                //PARA LOS RENGLONES
                for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
                {

                    for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
                    {
                       
data = ds.Tables[0].Rows[i].ItemArray[j].ToString();                       
                        xlWorkSheet.Cells[i + 2, j + 1] = data;

                    }
                }
             
  xlWorkBook.SaveAs(RutaCompleta, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

              
            }
            catch (Exception)
            {
             
  return false;
                throw;

            }

            return true;
        }

    }

// Segunda opcion

 

void CrearExcelSqlServer()
        {
            //Referencia necesiarias de cargar

            //Microsoft ADO Ext. 6.0 for DDL AND Secruity
            //Microsoft eXCEL 14.0 Object Library

            

            string RutaCompleta = "";    // = @"D:\mi documento.xls";
            string laConsulta = "select * from bts";
            string textoCmd = laConsulta;
            string ipServidor = "10.xx.xx.xxx";
            string elUsuario = "GIS";
            string PWD = "GIS";
            string catal = "BD_NEW";
            string stringconeccion;
            SqlConnection con = new SqlConnection();
            DataTable dt = new DataTable();

 

            ADODB.Recordset rs = new ADODB.Recordset();
            ADODB.Connection cn;

            // Preguntar donde guardar el documento exportado y asignarle un nombre
            // Agregar primero un saveFileDialog al formulario

            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "xls files (*.xls)|*.xls";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    RutaCompleta = saveFileDialog1.FileName;
                    myStream.Close();
                }
                else
                {
                    MessageBox.Show("Descarga cancelada.");
                    return;
                }
            }
            else
            {
                MessageBox.Show("Descarga cancelada.");
                return;
            }

            //iniciar la coneccion

            stringconeccion = "Provider=SQLOLEDB.1; data source=" + ipServidor + ";User ID=" + elUsuario + "; PWD=" + PWD + "; Catalog=" + catal;
            cn = new ADODB.Connection();
            cn.Open(stringconeccion);

            try
            {
                rs.Open(textoCmd, cn);
                Excel.Application xlApp;
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                object misValue = System.Reflection.Missing.Value;

                xlApp = new Excel.Application();
                xlWorkBook = xlApp.Workbooks.Add(misValue);
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

                //Copiar encabezados
                for (int c = 0; c < rs.Fields.Count; c++)
                {
                    xlWorkSheet.Cells[1, c + 1] = rs.Fields[c].Name;
                }

                //copiar renglones
                xlWorkSheet.Range["A2"].CopyFromRecordset(rs);

                //Guardar Documento
                xlWorkBook.SaveAs(RutaCompleta, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

            }
            catch (Exception)
            {
                throw;
            }
        }


}

bottom of page