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.Refresh(false); oBook.SaveAs(aFichero, 18); oBook.Close(); oExcel.Quit(); oExcel = null; return true; } catch (Exception ex) { MessageBox.Show(ex.Message); return false; } } } }