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
interop.Excel .net 1.5.0.0 true D:\APPLIT.NET\Interop.Excel.dll
c'est ce que j'ai concernant la referance excel de mon projet si vous pouver m aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 La récupération de la fabrique de classe COM pour le composant avec le CLSID {00024500-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.
voici l'erreur qui me met quand je desinstall excel et on executant la ligne de commande Dim appExcel As New Excel.Application
merci de votre aide
je viens de faire le tour des sites qui parle de cette erreur, il disent que c'est pas fesable sans avoire excel installer "help please"
Is Excel installed there? I ask because some people think they access Excel
without installing them. The Interop layer is only a layer between the own
app and the COM application. Without the COM application, it still doesn't
run. You probably know this already (but maybe not).
http://www.thescripts.com/forum/thread459532.html
il me faut la dll de type COM le probleme je l'ajoute quand j'install excel et dés que je supprime excel elle disparait "des references de mon projet" meme on la copiant a la main vers un autre repertoire
Par contre j ai pas ce probleme avec access WHY
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
est ce quelqu un peut m'aider juste pour ecrire du texte sur un fichier excel sans avoir excel installer sur le poste car la je coince j'ai tenter plein de truc avec les DLL surtout avec "Microsoft.Office.Interop.Excel.dll" sans succes
Il existe des API permettant de manipuler des fichiers Excel sans avoir besoin des bibliothèques COM. C'est indiqué dans l'article que je t'ai donné en lien, mais tu n'as pas du aller voir (http://skalp.developpez.com/tutoriel...tomationexcel/)
Il existe une API gratuite , c'est le projet Koogra. Bon courage, il n'y a pas de documentation utilisateur...
merci pour ton aide je viens d'utiliser la DLL du projet koogra ca marche bien mais c'est juste pour la lecture de fichier excel et non l'ecriture
ben voila j ai trouver une solution trés simple pour generer un fichier excel sans avoir excel installer sur le poste, il suffit de generer un fichier qlq genre txt et modifier son extention en .xls,
biensure il faut utiliser le separateur tabulation pour pouvoir l'ouvrir avec excel
voila Merci de Votre aide a tous
Autant pour moi !
En fait tu génères un fichier texte dont le séparateur de champs est la tabulation.
As-tu testé l'ouverture avec Excel ? Si oui, avec quelle version ?
Car j'ai testé de mon côté avec Excel 2003 et lorsque j'ouvre en double cliquant sur le fichier, les données s'affichent bien sur des lignes différentes, mais seulement dans la première colonne...
Pour que les données s'affichent correctement, il faut passer par l'outil d'import Excel, soit en faisant Fichier > Ouvrir, soit en faisant Données W Données externes > Importer des données.
Mais si la solution de générer le fichier texte te convient quand même, ya pas de problème
[EDIT] Oui, effectivement, j'ai testé avec un fichier enregistré avec notepad et il a du transformer les tabulations en espaces à l'enregistrement...
non il s'ouvre bien avec excel2003 sans probleme voila mon code ca peut aider quelqu'un
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 Public Sub export_to_xls(ByVal chemin As String, ByVal table As String) Dim command As New OleDb.OleDbCommand Dim reader As OleDb.OleDbDataReader Dim sw As StreamWriter Dim i, j As Integer Dim first As Boolean Dim formExcelProgression As FS_traitementProgession 'connexion a la base de donnée Try command.Connection = Depart.ConnectionBdNet command.CommandText = "SELECT * FROM " + table + " " reader = command.ExecuteReader() sw = New StreamWriter(chemin, False, System.Text.Encoding.Default) first = True While (reader.Read()) For i = 1 To reader.FieldCount - 1 If first = True Then For j = 1 To reader.FieldCount - 1 sw.Write(reader.GetName(j)) sw.Write(vbTab) sw.Flush() Next first = False sw.Write(sw.NewLine) sw.Write(sw.NewLine) sw.Flush() End If sw.Write(reader.Item(i)) sw.Write(vbTab) sw.Flush() Next sw.Write(sw.NewLine) sw.Flush() End While sw.Close() reader.Close() command.Dispose() Catch ex As Exception System.Windows.Forms.MessageBox.Show("Exportation vers excel : " + ex.Message) End Try End Sub #End Region
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager