Principales respuestas
Exportar datos desde un ACESS a un EXCEL sin pasar por Datagridview

Pregunta
-
Hola a todos,
me encuentro realizando un proyecto y me ha surgido una duda.
Resulta que mi formulario dispone de varios datagridview. Los datos que aparecen en estos datagridview los obtengo de un fichero de access a través de una conexión OleDB. Esto me funciona perfectamente. Ahora bien, dentro de este fichero de access hay una "Consulta" (query) que me da como resultado una tabla de datos.
Necesito que, tras pulsar un botón de mi formulario, se me cree un fichero excel y se me guarden los datos de la tabla de esta query en el fichero excel pero sin que estos se representen en ningún datagridview del formulario. Recalco lo del datagridview ya que si que he visto muchos ejemplos este tipo.
En el código que os pongo a continuación podéis ver cuál es la idea de como puede ser esto:
Public oExcel As Microsoft.Office.Interop.Excel.Application = Nothing Public oWorkBook As Microsoft.Office.Interop.Excel.Workbook = Nothing Sub CreateExcel() Dim ds As New DataSet 'Creo una variable de tipo DataSet para guardar los datos de la Query Dim adp As New OleDb.OleDbDataAdapter 'Creo el adaptador para guardarlo en una tabla Strsql = "SELECT CHECK_EMITIR, LINE_ID FROM TREE ORDER BY LINE_ID;" 'String de la SQL para ACCESS adp = New OleDb.OleDbDataAdapter(Strsql, conn) 'Cargo el adaptador (la variable conn es la conexión OleDB que ya se ha implementado en otra rutina) ds.Tables.Add("Tabla") 'Añado el DataSet a la tabla adp.Fill(ds.Tables("Tabla")) 'Cargo los valores de la query a la Tabla oExcel = New Microsoft.Office.Interop.Excel.Application 'Inicializo excel oExcel.Visible = True 'Lo hago visible oWorkBook = oExcel.Workbooks.Add ' le añado un libro '------ AQUÍ DEBERÍAN IR LAS OPERACIONES PARA CARGAR LOS DATOS EN EL EXCEL ---- ' ' ' ' ' ' ' '------------------------------------------------------------------------------ ' oWorkBook.SaveAs("C:\.............") 'Guardo el ibro en la sguiente ruta 'CIERRO LOS ENLACES oWorkBook.Close() System.Runtime.InteropServices.Marshal.ReleaseComObject(oWorkBook) oExcel.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel) oWorkBook = Nothing oExcel = Nothing End Sub
Esta rutina la llamo desde un botón. Me gustaría saber qué método se os ocurre para cargar los datos de la query en el excel a través de la conexión OleDB que tengo hecha.
Gracias. Un saludo!
Respuestas
-
public class WorkbookEngine { public static void CreateWorkbook(DataSet ds, String path) { XmlDataDocument xmlDataDoc = new XmlDataDocument(ds); XslTransform xt = new XslTransform(); StreamReader reader =new StreamReader(typeof (WorkbookEngine).Assembly.GetManifestResourceStream(typeof (WorkbookEngine), “Excel.xsl”)); XmlTextReader xRdr = new XmlTextReader(reader); xt.Load(xRdr, null, null); StringWriter sw = new StringWriter(); xt.Transform(xmlDataDoc, null, sw, null); StreamWriter myWriter = new StreamWriter (path + “\\Report.xls”); myWriter.Write (sw.ToString()); myWriter.Close (); } }
puedes pasarle el dataset directamente y la ruta donde quieres guardar
- Propuesto como respuesta Karen MalagónModerator jueves, 12 de noviembre de 2015 22:51
- Marcado como respuesta Karen MalagónModerator martes, 17 de noviembre de 2015 21:57
Todas las respuestas
-
public class WorkbookEngine { public static void CreateWorkbook(DataSet ds, String path) { XmlDataDocument xmlDataDoc = new XmlDataDocument(ds); XslTransform xt = new XslTransform(); StreamReader reader =new StreamReader(typeof (WorkbookEngine).Assembly.GetManifestResourceStream(typeof (WorkbookEngine), “Excel.xsl”)); XmlTextReader xRdr = new XmlTextReader(reader); xt.Load(xRdr, null, null); StringWriter sw = new StringWriter(); xt.Transform(xmlDataDoc, null, sw, null); StreamWriter myWriter = new StreamWriter (path + “\\Report.xls”); myWriter.Write (sw.ToString()); myWriter.Close (); } }
puedes pasarle el dataset directamente y la ruta donde quieres guardar
- Propuesto como respuesta Karen MalagónModerator jueves, 12 de noviembre de 2015 22:51
- Marcado como respuesta Karen MalagónModerator martes, 17 de noviembre de 2015 21:57
-
- Editado legolas2024 jueves, 12 de noviembre de 2015 15:32