Partage
  • Partager sur Facebook
  • Partager sur Twitter

Somme de colonnes dans un fichier csv

    2 mai 2011 à 15:02:05

    Salut

    J'essaie de determiner la somme des valeurs se trouvant dans un fichier csv et me heurte depuis des heures à des difficultés. quelqu'un voudrait m'aider merci...

    J'ai essayer avec a methode suivante:
    Private Sub sumColumn(ByVal datei As String)
    
            Dim fs As New FileStream(datei, FileMode.Open)
            Dim sr As New StreamReader(fs)
            Dim xcol As Integer
    
            Dim columns As New List(Of Double)
    
            If sr.ReadLine <> "" Then
                xcol = sr.ReadLine.Split.Length
            End If
    
            Do While Not sr.EndOfStream
    
                If sr.ReadLine <> "" Then
                    Dim text As String = sr.ReadLine
                    Dim kette() As String = text.Split()
                    Dim length As Integer = kette.Length
    
                    Dim iter As Integer
                    For iter = 2 To length - 1
                        Dim y As Integer
                        Dim yval As Integer
                        If Double.TryParse(kette(iter), yval) Then
                            y = yval
                        End If
                        columns.Item(iter - 2) += y
                        MsgBox(columns(iter - 1))
                    Next
                End If
                
    
    
            Loop
    
        End Sub
    


    le fichier est comme le suivant. Ce sont des valeurs de mesures d'une installation photovoltaique

    2011:04:10 02:30 0 0 0 0 0 0 0 0 1 0
    2011:04:10 03:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 03:30 0 0 0 0 0 0 0 0 0 0
    2011:04:10 04:00 0 0 0 0 0 0 0 0 1 0
    2011:04:10 04:30 0 0 0 0 0 0 0 0 0 0
    2011:04:10 05:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 05:30 0 0 0 0 0 0 0 0 1 0
    2011:04:10 06:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 06:30 74 75 77 79 78 78 79 25 20 0
    2011:04:10 07:00 290 294 296 302 301 301 304 134 101 0
    2011:04:10 07:30 672 677 671 665 660 654 658 311 246 0
    2011:04:10 08:00 1167 1172 1169 1158 1154 1142 1149 554 435 0
    2011:04:10 08:30 1716 1720 1709 1690 1690 1672 1681 819 643 0
    2011:04:10 09:00 2156 2164 2167 2166 2174 2150 2166 1065 816 0
    2011:04:10 09:30 2551 2563 2574 2575 2590 2566 2590 1283 969 0
    2011:04:10 10:00 2866 2884 2896 2899 2920 2894 2920 1446 1091 0
    2011:04:10 10:30 3141 3166 3182 3186 3215 3186 3216 1598 1202 0
    2011:04:10 11:00 3348 3373 3394 3400 3434 3405 3441 1716 1282 0
    2011:04:10 11:30 3495 3521 3542 3546 3587 3559 3598 1798 1337 0
    2011:04:10 12:00 3583 3613 3633 3629 3672 3643 3685 1845 1369 0
    2011:04:10 12:30 3599 3634 3658 3660 3706 3680 3726 1869 1382 0
    2011:04:10 13:00 3556 3589 3618 3621 3668 3641 3688 1848 1375 0
    2011:04:10 13:30 3455 3487 3515 3521 3569 3545 3589 1799 1340 0
    2011:04:10 14:00 3326 3360 3389 3396 3441 3422 3466 1734 1296 0
    2011:04:10 14:30 3161 3193 3220 3228 3269 3249 3286 1643 1235 0
    2011:04:10 15:00 2934 2966 2989 2994 3030 3011 3047 1521 1150 0
    2011:04:10 15:30 2638 2664 2681 2687 2715 2697 2726 1356 1024 0
    2011:04:10 16:00 2286 2308 2321 2326 2347 2333 2358 1168 884 0
    2011:04:10 16:30 1862 1881 1890 1896 1911 1900 1919 947 722 0
    2011:04:10 17:00 1446 1460 1466 1472 1478 1471 1484 724 555 0
    2011:04:10 17:30 976 986 988 994 996 992 1000 483 370 0
    2011:04:10 18:00 567 573 575 578 578 577 581 273 211 0
    2011:04:10 18:30 273 278 277 280 276 277 279 121 96 0
    2011:04:10 19:00 94 95 95 96 94 95 95 33 26 0
    2011:04:10 19:30 8 8 8 9 8 8 8 0 1 0
    2011:04:10 20:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 20:30 0 0 0 0 0 0 0 0 0 0
    2011:04:10 21:00 0 0 0 0 0 0 0 0 1 0
    2011:04:10 21:30 0 0 0 0 0 0 0 0 0 0
    2011:04:10 22:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 22:30 0 0 0 0 0 0 0 0 1 0
    2011:04:10 23:00 0 0 0 0 0 0 0 0 0 0
    2011:04:10 23:30 0 0 0 0 0 0 0 0 1 0


    merci pour votre aide...

    • Partager sur Facebook
    • Partager sur Twitter
      2 mai 2011 à 15:17:30

      Qu'est-ce que tu veux calculer comme somme ? La somme totale ? La somme pour chaque ligne ? Ou pour chaque colonne ?

      Fais attention au fait que sr.ReadLine lit une ligne du fichier avant de passer à la suivante.
      Donc en écrivant par exemple

      If sr.ReadLine <> "" Then
         Dim text As String = sr.ReadLine
      

      Tu lis en réalité 2 lignes différentes.
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2011 à 8:11:17

        Salut Orwell

        J'ai pu resoudre le probleme..

        Je voulais calculer la somme des colonnes..

        Ci-joint la méthode utilisée:

        Private Function sumColumn(ByVal datei As String) As List(Of Double)
        
                Dim fs As New FileStream(datei, FileMode.Open)
                Dim sr As New StreamReader(fs)
                Dim xcol As Integer
        
                Dim columns As New List(Of Double)
        
                If sr.ReadLine <> "" Then
                    xcol = sr.ReadLine.Split.Length
                    Dim index As Integer = 0
                    Do While index < xcol - 2
        
                        columns.Add(0.0)
                        index += 1
                    Loop
        
                End If
        
                Do While Not sr.EndOfStream
                    Dim text As String = sr.ReadLine
        
                    If text <> "" Then
                        Dim kette() As String = text.Split()
                        Dim length As Integer = kette.Length
        
                        Dim iter As Integer
                        For iter = 2 To length - 1
                            Dim y As Integer
                            Dim yval As Integer
                            If Double.TryParse(kette(iter), yval) Then
                                y = yval
                            End If
                            columns.Item(iter - 2) += y
        
                        Next
                    End If
        
                Loop
        
                Return columns
        
            End Function
        
        • Partager sur Facebook
        • Partager sur Twitter

        Somme de colonnes dans un fichier csv

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown