Utilisateur anonyme
-
8 sept. 2005 à 20:19
l0ren
Messages postés2Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention11 août 2007
-
22 août 2007 à 14:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
For i = 0 To myTable.Columns.Count - 1
exsheet.Cells(1, i + 1) = myTable.Columns(i).ColumnName
Next
Dim ligneDebut As Integer = 2
For i = 0 To myTable.Rows.Count - 1
For j = 0 To myTable.Columns.Count - 1
exsheet.Cells(ligneDebut + i, j + 1) = myTable.Rows(i)(j).ToString
Next
Next
exbook.SaveAs(cheminFichier)
Catch ex As Exception
Throw ex
Finally
If Not exbook Is Nothing Then exbook.Close()
If Not app Is Nothing Then app.Quit()
End Try
End Sub
cs_chaton76
Messages postés1Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention20 avril 2006 20 avril 2006 à 15:55
Pour répondre à Benouille, il est en effet impossible que ce code fonctionne avec plusieurs tables dans le dataSet. Si quelqu'un désire le code modifié en C# je vous l'envoie.
lordskyser1
Messages postés84Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention 1 juillet 2006 13 nov. 2005 à 18:52
Très bien comme petit exemple. Juste un petit défaut, lorsqu'on sélectionne une table d'une base, que l'on génère le dataset, il n'est pas possible par la suite de sélectionner une table d'une autre base et de générer un autre dataset pour l'exporter vers excel sans redémarrer l'application.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 sept. 2005 à 00:42
Le format de fichier Access utilise le moteur Jet qui est tout à fait un moteur de base de données, le fait de tout mettre dans 1 seul fichier ne change rien à l'affaire. A l'intérieur y sont stockés les différentes tables, indexes, relations, etc... Un moteur SQL complet est aussi intégré.
cs_Benouille
Messages postés215Date d'inscriptionjeudi 24 octobre 2002StatutMembreDernière intervention 7 septembre 2007 12 sept. 2005 à 00:29
Access n'est pas nue base de données c'est un fichier de données.
bon moi y a un truc qui me turlupine:
# For Each myTable In unDataSet.Tables
# For Each myRow In myTable.Rows
# i = 1
# For Each myColumn In myTable.Columns
# exsheet.Cells(j, i) = CType(myRow(myColumn) & "", String)
# i += 1
# Next myColumn
# j += 1
# Next myRow
# Next myTable
avec un for each matable je m'attends a ajouter une feuille a excell
parceque si y a 2 tables ça va réécrire sur la premiere non ?
la je peux pas tester je suis sur un vieux linux sans .net ni meme excel :D
et puis bon j'ai pas de gros de doutes non plus.
Faux, Acces est bien un base relationelle, certe pas aussi puisssante que oracle en terme de volumétrie, mais très souple et facile a metre en oeuvre.
Quoi qu'il en soit, de maniere générique, quelque soit le sgbr utilisé, l'utilisation de l'objet shéma de ADO permet de tout récuperer d'une base de données, listes des tables, des vues, des index, ...
cs_rahou
Messages postés12Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention28 octobre 2006 10 sept. 2005 à 01:49
C'est cela la force de "Codes Sources", échanges et discussions.
PS: Merci d'apporter des améliorations au code en donnant la liste des tables qui existes dans une base de données Access. Pour SQL SERVER et ORACLE, il n'y a pas de problèmes. Pour Sql Server , il existe la requête (select * from sysobjects where xtype='u') pour lister l'ensemble des tables d'une base de données. Et pour Oracle (SELECT TABLE_NAME FROM ALL_TABLES) pour renvoyer la liste des tables.
Pour Access je ne c pas (car n'étant pas une bd relationnelle).
Ca y est jai trouvé:
1 - Referencer dans l'onglet COM:
Microsoft Excel object Livrary X.0
X etant le numero de version installé sur le poste.
Cela va avoir pour conséquence de créer une DLL dans le répertoire "Bin" nommée "Interop.Excel.dll"
Ensuite modifier toutes les lignes de code:
Microsoft.Office.Interop.Excel.Application
en suppriment le début "Microsoft.Office.Interop"
ce qui donne sur un échantillon
--------------------------------------
Try
Dim app As New Excel.Application
Dim exbook As Excel.Workbook
Dim exsheet As Excel.Worksheet
exbook = app.Workbooks.Add
exsheet = exbook.Sheets(1)
i = 0
REM DEFINITION DES EN-TETE DE COLONNES
For Each myTable In unDataSet.Tables
For Each myColumn In myTable.Columns
exsheet.Cells(1, i + 1) = myTable.Columns(i).ColumnName
i = i + 1
Next
Next
Désolé mais ca ne suffit pas car il n'apparait pas dans ma liste.
Je suppose peut être que c'est lors de l'installation d'office qu'il faut installer ces composants , peut^tre dans les options d'installation ?
cs_rahou
Messages postés12Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention28 octobre 2006 9 sept. 2005 à 20:07
Il suffit juste d'ajouter le composant Microsoft Excel.
Pour y arriver , il suffit d'aller sur le menu Outils>Ajouter références, Ensuite cliquez sur l'onglet "COM" et Chosir "Microsoft Excel 10" ou celle dont vous disposez. Et avec cela, ttes les références manquantes seront chargées.
Manqueles références suivantes:
Excel
Microsoft.Office.Core
VBIDE
Il faudrait les mettre en copie locale ou alors indiquer un endroit ou les trouver. Ca n'a pas l'aire d'être des dll courantes.
La seule chose que j'ai trouvé concernant Excel c'est:
Microsoft Excel 9.0 object Library, et a priori c'est pas le bon.
J'ai offiche 2000 d'installé
Quel est ce composant dont tu parles ?
cs_rahou
Messages postés12Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention28 octobre 2006 8 sept. 2005 à 20:27
Il suffit juste de charger le composant Microsoft Excel, pour que la référence soit importée par défaut.
22 août 2007 à 14:16
Les références COM à rajouter sont :
Microsoft Office X.0 Object Library & Microsoft Excel X.0 Object Library
Vous devriez alors avoir Excel, Microsoft.Office.Core, stdole et VBIDE
J'ai modifier ta source pour qu'elle n'exporte qu'une table vers Excel :
Private Sub ExporterDataSetVersExcel(ByVal myTable As DataTable, ByVal cheminFichier As String)
Dim myRow As DataRow
Dim myColumn As DataColumn
Dim app As New Excel.Application
Dim exbook As Excel.Workbook
Dim exsheet As Excel.Worksheet
Try
exbook = app.Workbooks.Add
exsheet = exbook.Sheets(1)
Dim i, j As Integer
For i = 0 To myTable.Columns.Count - 1
exsheet.Cells(1, i + 1) = myTable.Columns(i).ColumnName
Next
Dim ligneDebut As Integer = 2
For i = 0 To myTable.Rows.Count - 1
For j = 0 To myTable.Columns.Count - 1
exsheet.Cells(ligneDebut + i, j + 1) = myTable.Rows(i)(j).ToString
Next
Next
exbook.SaveAs(cheminFichier)
Catch ex As Exception
Throw ex
Finally
If Not exbook Is Nothing Then exbook.Close()
If Not app Is Nothing Then app.Quit()
End Try
End Sub
20 avril 2006 à 15:55
13 nov. 2005 à 18:52
12 sept. 2005 à 00:42
12 sept. 2005 à 00:29
bon moi y a un truc qui me turlupine:
# For Each myTable In unDataSet.Tables
# For Each myRow In myTable.Rows
# i = 1
# For Each myColumn In myTable.Columns
# exsheet.Cells(j, i) = CType(myRow(myColumn) & "", String)
# i += 1
# Next myColumn
# j += 1
# Next myRow
# Next myTable
avec un for each matable je m'attends a ajouter une feuille a excell
parceque si y a 2 tables ça va réécrire sur la premiere non ?
la je peux pas tester je suis sur un vieux linux sans .net ni meme excel :D
et puis bon j'ai pas de gros de doutes non plus.
vb nouille, le roi de l'éppat'
10 sept. 2005 à 14:01
Quoi qu'il en soit, de maniere générique, quelque soit le sgbr utilisé, l'utilisation de l'objet shéma de ADO permet de tout récuperer d'une base de données, listes des tables, des vues, des index, ...
10 sept. 2005 à 01:49
PS: Merci d'apporter des améliorations au code en donnant la liste des tables qui existes dans une base de données Access. Pour SQL SERVER et ORACLE, il n'y a pas de problèmes. Pour Sql Server , il existe la requête (select * from sysobjects where xtype='u') pour lister l'ensemble des tables d'une base de données. Et pour Oracle (SELECT TABLE_NAME FROM ALL_TABLES) pour renvoyer la liste des tables.
Pour Access je ne c pas (car n'étant pas une bd relationnelle).
9 sept. 2005 à 22:18
Su le site de developpez.com, il y a un excellent tutoriel qui traite du sujet, (pour Vb, C#), et téléchargeable en PDF.
Voici l'adresse:
http://dotnet.developpez.com/cours/office/
Merci J-M Rabilloud
Vous trouverez aussi ici toutes le DLL quipermette de piloter presque tout avec des exemples (bon c'est en anglais, mais avec un peu de patience c'est pas trop compliqué)
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/office.asp
9 sept. 2005 à 22:04
1 - Referencer dans l'onglet COM:
Microsoft Excel object Livrary X.0
X etant le numero de version installé sur le poste.
Cela va avoir pour conséquence de créer une DLL dans le répertoire "Bin" nommée "Interop.Excel.dll"
Ensuite modifier toutes les lignes de code:
Microsoft.Office.Interop.Excel.Application
en suppriment le début "Microsoft.Office.Interop"
ce qui donne sur un échantillon
--------------------------------------
Try
Dim app As New Excel.Application
Dim exbook As Excel.Workbook
Dim exsheet As Excel.Worksheet
exbook = app.Workbooks.Add
exsheet = exbook.Sheets(1)
i = 0
REM DEFINITION DES EN-TETE DE COLONNES
For Each myTable In unDataSet.Tables
For Each myColumn In myTable.Columns
exsheet.Cells(1, i + 1) = myTable.Columns(i).ColumnName
i = i + 1
Next
Next
--------------------------------------
Et la ca marche très bien
9 sept. 2005 à 20:55
Je suppose peut être que c'est lors de l'installation d'office qu'il faut installer ces composants , peut^tre dans les options d'installation ?
9 sept. 2005 à 20:07
Pour y arriver , il suffit d'aller sur le menu Outils>Ajouter références, Ensuite cliquez sur l'onglet "COM" et Chosir "Microsoft Excel 10" ou celle dont vous disposez. Et avec cela, ttes les références manquantes seront chargées.
9 sept. 2005 à 18:37
Excel
Microsoft.Office.Core
VBIDE
Il faudrait les mettre en copie locale ou alors indiquer un endroit ou les trouver. Ca n'a pas l'aire d'être des dll courantes.
8 sept. 2005 à 21:46
La source m'intéresse. Pourrait tu mettre un zip avec les dll manquantes stp.
8 sept. 2005 à 21:37
Microsoft Excel 9.0 object Library, et a priori c'est pas le bon.
J'ai offiche 2000 d'installé
Quel est ce composant dont tu parles ?
8 sept. 2005 à 20:27
8 sept. 2005 à 20:19
Microsoft.Office.Interop.Excel
N'est pas reconnu