Export excel [Résolu]

cs_roro69 65 Messages postés vendredi 27 décembre 2002Date d'inscription 9 janvier 2018 Dernière intervention - 25 oct. 2017 à 10:47 - Dernière réponse : Whismeril 10854 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention
- 27 oct. 2017 à 23:59
Bonjour et merci d’avance pour le temps consacré et l’aide apporté.
Voilà mon problème :
Dans la boucle ci-dessous je récupère des informations que j’exporte dans Microsoft Excel ; ceci ligne par ligne.

Dim col As Integer = 2
Dim ligne As Integer = 3
For i As Integer = 1 To folds.Length - 1
If folds(i).a = folds(i - 1).a Then
col = col + 2
Else
col = 2
ligne += 1
End If
worksheet.Cells(ligne, 1) = i
worksheet.Cells(ligne, col) = folds(i).b
worksheet.Cells(ligne, col + 1) = folds(i).c
Next

Le problème que j’ai et que ceci est fort long.
J’aimerais savoir si il est possible de passer par un tableau et le transposer dans Excel.
Un grand merci pour vos réponses


--
Afficher la suite 

7 réponses

Répondre au sujet
Whismeril 10854 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - 25 oct. 2017 à 10:50
0
Utile
Bonjour

Passer par l’API est toujours long.
Si tu travailles avec un fichier xlsx, je te conseille d’écrire directement dans le fichier.
J’ai écrit un petit wrappeur exemple
http://codes-sources.commentcamarche.net/source/102062-excel-avec-openxml

Commenter la réponse de Whismeril
cs_roro69 65 Messages postés vendredi 27 décembre 2002Date d'inscription 9 janvier 2018 Dernière intervention - 25 oct. 2017 à 13:11
0
Utile
Bonjour Whismeril
Merci pour ton interêt
Je vais regarder ton wrappeur.
Je reviendrai sur la discussion pour le retour d'expérience
Merci
--
Commenter la réponse de cs_roro69
cs_roro69 65 Messages postés vendredi 27 décembre 2002Date d'inscription 9 janvier 2018 Dernière intervention - Modifié par cs_roro69 le 25/10/2017 à 15:01
0
Utile
rebonjour Whismeril
Bravo pour le "wrappeur " c'est vraiment bien ;
juste j'ai un peu mal avec les bordures ;voici mon codes
le fichier est bien crée mais les bordures n'apparaissent pas

Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
Dim format As FormatPersonnalise
Dim indexFormat As Integer
Dim saveFileDialog As SaveFileDialog = New SaveFileDialog()
saveFileDialog.Filter = "Excel Files (*.xlsx)|*.xlsx"
saveFileDialog.FilterIndex = 1
Dim flag As Boolean = saveFileDialog.ShowDialog() = DialogResult.OK
If flag Then
Dim fileName As String = saveFileDialog.FileName

excel.CreerDocument(fileName)
excel.AjouterFeuille("blabla")
Else
Exit Sub
End If
'Les index de lignes et colonnes commencent par 1

'écriture de nombres

For ligne As Integer = 2 To 9
For colonne As Integer = 1 To 9
excel.EcrireCellule(ligne, colonne, (ligne - 1) + (colonne / 10.0))
format = New FormatPersonnalise With {.Bordures = New List(Of Bordure) From {
New Bordure With {.Aspect = AspectBordure.Aucune, .Position = PositionBordure.Droite}}}
indexFormat = excel.CreerUnFormatDeCellule("A1", format)
excel.AffecteFormatCellule(ligne, colonne, indexFormat)
Next colonne
Next ligne


boucle() 'Fermer sans lancer l'application
MessageBox.Show("Fichier excel créer" & vbCrLf & "BiEN")
End Sub

Voilà si tu peut m'aiguiller comment gérer les bordures ,ce serait super
En tout cas ton programme est fantastique
Merci beaucoup
--
Commenter la réponse de cs_roro69
Whismeril 10854 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - Modifié par Whismeril le 25/10/2017 à 18:58
0
Utile
2
Alors deux chose, si tu mets AspectBordure.Aucune, y'a pas de bordure, donc pour le code ci dessous, c'est AspectBordure.Fine.

D'autre part, mon scénario ferme le document puis le réouvre, du coup, je n'avais pas essayé d'écrire et de formater directement.
Il se passe un truc que je n'ai pas compris, mais qui fait que ça marche quand on ferme et réouvre...
Donc en attendant de mieux
            Dim format As FormatPersonnalise
            Dim indexFormat As Integer

            If (File.Exists("testroro.xlsx")) Then
                File.Delete("testroro.xlsx")
            End If

            excel.CreerDocument("testroro.xlsx")
            excel.AjouterFeuille("blabla")

            'en attendant que je comprenne pourquoi
            excel.Fermer()
            excel.OuvrirUnDocument("testroro.xlsx")

            'écriture de nombres
            format = New FormatPersonnalise With {.Bordures = New List(Of Bordure) From {
                    New Bordure With {.Aspect = AspectBordure.Fine, .Position = PositionBordure.Haut}}}

            indexFormat = excel.CreerUnFormatDeCellule("A1", format)

            'Les index de lignes et colonnes commencent par 1
            For ligne As Integer = 2 To 9
                For colonne As Integer = 1 To 9
                    excel.EcrireCellule(ligne, colonne, (ligne - 1) + (colonne / 10.0))
                    excel.AffecteFormatCellule(ligne, colonne, indexFormat)
                Next colonne
            Next ligne

            excel.Fermer()


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
cs_roro69 65 Messages postés vendredi 27 décembre 2002Date d'inscription 9 janvier 2018 Dernière intervention - 26 oct. 2017 à 17:32
Merci Whismeril
ça fonctionne ; par contre il est vrai qu'il faut créer , fermer, ouvrir le document ; sinon il ne formate pas le document..
Il y a vraiment un réel gain de temps de réalisation dans l'importation des données;
En tout cas merci pour ce sympathique programme;et merci pour tes réponses et le temps consacré
Whismeril 10854 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - 26 oct. 2017 à 18:39
De rien, je tacherai de corriger mon source prochainement.
Commenter la réponse de Whismeril
Whismeril 10854 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - 27 oct. 2017 à 23:59
0
Utile
Bonsoir
bug corrigé et source mis à jour
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.