Script - Exportar a Excel

Creado por David Miralpeix, Modificado el Mar, 22 Oct a 8:24 A. M. por Rosa Mª Martí

Función para exportar de manera rápida y eficiente, el resultado de una sentencia SQL a una hoja de Excel. Para la versión 5.0 hay que tener instalado un Microsoft Excel de 64 bits.

 

Código VB6:

Function PasarSqlAExcel(aColumnas, aFrom, aWhere, aFichero,aPagina)

Dim oExcel 'As Object
Dim oBook 'As Object
Dim oSheet 'As Object

Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets(1)

oSheet.Name = aPagina
lSQL = "Select " & aColumnas & " From " & aFrom & " " & aWhere

Dim oQryTable 'As Object
Set oQryTable = oSheet.QueryTables.Add("OLEDB;" & gCn.ConnectionString,
oSheet.Range("A1"), lSQL)

oQryTable.Refresh False

oBook.SaveAs aFichero, 18
oBook.Close

oExcel.Quit
Set oExcel = Nothing
PasarSqlAExcel = True

Exit Function
End Function

Código C#:

using Ahora.Excel;
using AhoraCore;
using AhoraOCX;
using AhoraSistema;
using System;
using System.Windows.Forms;

namespace AhoraScriptsPantalla
{
  public class AhoraCl_frmPedidos : AhoraOCX.AhoraBaseScript
  {

                public void Show()
                {
                    PasarSqlAExcel("*", "Clientes_Datos", "", "C:\\Temp\\TT.xls", "TEST");
                }

                public bool PasarSqlAExcel(string aColumnas, string aFrom, string aWhere, string aFichero, string aPagina)
                {
                    try
                    {
                        IExcelApplication oExcel = AhoraCore.AhoraServiceLocator.Current.GetService<Ahora.Excel.IExcelApplication>();                
                        IExcelWorkbook oBook = oExcel.Workbooks.Add();
                        IExcelWorksheet oSheet = oBook.Worksheets[1];

                        oSheet.Name = aPagina;
                        string lSQL = "SELECT " + aColumnas + " FROM " + aFrom + " " + aWhere;

                        IExcelQueryTable oQryTable = oSheet.QueryTables.Add("OLEDB;" + gCn.ConnectionString, oSheet.get_Range("A1"), lSQL);

                        //oQryTable.FieldNames = false; //con esta propiedad se exportan los datos sin los nombres de columna

                        oQryTable.Refresh(false);

                        oBook.SaveAs(aFichero, 18);
                        oBook.Close();

                        oExcel.Quit();
                        oExcel = null;

                        return true;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        return false;
                    }
                  }
        }
}

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo