Bonjours
je cherche a faire l'exportation d'une table access vers excel
sans avoire forcement excel installer vu que j'ouvre pas forcement le fichier excel
si quelqu'un peut m'aider merci bcp
Bonjours
je cherche a faire l'exportation d'une table access vers excel
sans avoire forcement excel installer vu que j'ouvre pas forcement le fichier excel
si quelqu'un peut m'aider merci bcp
Je sais que c'est possible en utilisant le nouveau format openXml d'excel 2007 (ce sont les documents .xlsx).
Si tu googles OpenXMl et template tu trouveras un tutoriel pas mal sur le site de crosoft.
Si tu as des problèmes reviens poster par ici, je me suis pas mal pris la tête là dessus et je pourrais peut être t'aider.
merci de ta reponse
j'ai lu :
il est maintenant possible de créer ou de manipuler des documents Office sur un serveur, sans avoir à y installer Office avec le format openxml
donc c'est bien ce que je recherche le seul souci que j ai pris bcp de temps a ecrire mon programme et je veut pas tout refaire
voici mon code
' Déclaration du fichier Excel à ouvrir
Dim fichierExcel As Excel.Workbook
'-----------------------------
'Dim appExcel As New Excel.Application
Dim appExcel As New Excel.Application
' Pour éviter les questions!!!
appExcel.AlertBeforeOverwriting = False
appExcel.DisplayAlerts = False
c'est a l'appel de New Excel.Application qui plante si j'ai pas excel ya t il moyen de pas tout refaire pour integrer le format openxml
Là par contre non.
Le format OpenXml est complètement différent de l'ancien et Microsoft n'a pas encore fait grand chose pour permettre de l'utiliser comme tu souhaites le faire.
Tu as beaucoup de données à exporter (Nombre de cellules à modifier) ?
Je peux te donner des pistes pour accélérer les choses.
Si tu ne veux pas installer excel, j'ai bien peur que ton code soit à jeter...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 #Region " génération du fichier Excel " Public Sub generateExcel(ByRef table As String, ByRef rs As ADODB.Recordset, ByRef appExcel As Excel.Application) Try 'On Error Resume Next Dim formExcelProgression As FS_traitementProgession Dim col(300) As String Dim i As Short Dim j As Short Dim k As Short Dim CurrentPage As Short = 1 ' Récupération du nombre de colonnes Dim nbColonnes As Short Dim lettre As String nbColonnes = rs.Fields.Count For i = 0 To 25 col(i) = Chr(65 + i) Next i k = 26 For i = 0 To 7 For j = 0 To 25 col(k) = Chr(65 + i) & "" & Chr(65 + j) k = k + 1 If k > nbColonnes Then Exit For End If Next j If k > nbColonnes Then Exit For End If Next i 'préparation de la barre de progression formExcelProgression = New FS_traitementProgession 'Dim nbEnr As Short 'Dim step_Renamed As Short Dim nbEnr As Long Dim step_Renamed As Long nbEnr = 1 rs.MoveFirst() While Not (rs.EOF) nbEnr = nbEnr + 1 rs.MoveNext() End While formExcelProgression.ProgressBar1.Value = 0 formExcelProgression.ProgressBar1.Max = nbEnr step_Renamed = 1 'Attribut de visibilité d'Excel FctBase.Pause(1) appExcel.Visible = False formExcelProgression.Show() formExcelProgression.tick(step_Renamed) rs.MoveFirst() Dim caseCible As String While Not (rs.EOF) If i = 0 Then If CurrentPage > appExcel.Worksheets.Count Then appExcel.Worksheets.Add(After:=appExcel.Worksheets(appExcel.Worksheets.Count)) End If For i = 0 To (nbColonnes - 1) lettre = col(i) appExcel.Worksheets(CurrentPage).Range(lettre & "1").Value = rs.Fields(i).Name Next i i = 3 End If For j = 0 To (nbColonnes - 1) If Not IsDBNull(rs.Fields(j).Value) Then caseCible = col(j) & "" & i appExcel.Worksheets(CurrentPage).Range(caseCible).Value = rs.Fields(j).Value End If Next j i = i + 1 formExcelProgression.tick(step_Renamed) 'Déplacement du curseur rs.MoveNext() If (i = 30000) Then CurrentPage = CurrentPage + 1 i = 0 End If End While formExcelProgression.Close() Catch ex As Exception MessageBox.Show(ex.Message + " (ModExcel87) ") MessageBox.Show(ex.ToString()) Depart.FormMenuPrincipal.Cursor = Windows.Forms.Cursors.Default Exit Sub End Try End Sub #End Region End Module
ce code est appelle a la suite de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Try Dim rs As New ADODB.Recordset Dim fileName As String Dim fileNameChem As String Depart.FormMenuPrincipal.Cursor = System.Windows.Forms.Cursors.WaitCursor() ' Déclaration du fichier Excel à ouvrir Dim fichierExcel As Excel.Workbook '----------------------------- 'Dim appExcel As New Excel.Application Dim appExcel As New Excel.Application ' Pour éviter les questions!!! appExcel.AlertBeforeOverwriting = False appExcel.DisplayAlerts = False 'on exporte TOUTE la table dans un fichier xls ' Ouverture du fichier Excel fileName = Depart.cheminBD & "\rep\" & TPeriode.Text & TAnnee.Text & ".xls" fichierExcel = appExcel.Workbooks.Add Depart.connecterBD() rs.Open("SELECT * FROM imp_prov", _ Depart.ConnectionBd, ADOR.CursorTypeEnum.adOpenForwardOnly, ADOR.LockTypeEnum.adLockReadOnly) ' remplissage du fichier excel If Not (rs.EOF And rs.BOF) Then ' Ecriture des en-têtes de colonnes et des valeur ModExcel.generateExcel("table_temp", rs, appExcel) End If rs.Close() fichierExcel.SaveAs(fileName)
Il n'y a pas besoin d'avoir Excel installé sur le poste pour pouvoir générer des fichiers Excel par programmation. Il faut et il suffit de référencer les bibliothèques Office Excel dans son projet pour que le code que tu a écris, psyko72, soit interprété.
On me corrigera si je me trompe, mais le format OpenXml n'est pas lisible par les versions d'Excel antérieures à la version 2003.
Pour une compatibilité ascendante, il vaut mieux partir d'une vieille version d'Excel (2000 me semble un bon compromis) pour que les fichiers générés aient plus de chance d'être lisibles sur une machine quelconque.
Voici deux liens pour t'aider, psyko72 :
http://dotnet.developpez.com/cours/office/
http://skalp.developpez.com/tutoriel...tomationexcel/
Au temps pour moi![]()
je corrige.
OpenXML n'est lisible que par Office 2007.
Pour les versions antérieures (2003, XP et 2000) il existe un pack de compatibilité :
http://www.microsoft.com/downloads/d...3-c6bb74cd1466
Les règles du forum
Le trio magique : FAQ + Cours + fonction rechercher
Mes articles
Pas de questions par messages privés svp
Software is never finished, only abandoned.
Partager