Bonjour à tous,

J'essaye de lire un énorme fichier excel (plusieurs centaines de Mo) via OpenXML.

J'ai trouvé la méthode SAX qui semble parfaite pour ce cas de figure mais je coince sur la récupération des données de type string.

Le programme énumère bien les données présente dans les feuilles sélectionnées
mais je n'arrive pas a récuperer les véritables données qui se trouvent dans la SharedStringTable.

Du coup le programme ne me remonte que des séries de chiffres au lieu des valeurs que je cherche.
Je coince un peu sur cette partie.

Si quelqu'un a une piste pour moi...

Je vous remercie

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
 
Public Class StockedItems
 
    Public Sub ReadExcelFileSAX(ByVal fileName As String)
        Using spreadsheetDocument As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, False)
            Dim workbookPart As WorkbookPart = spreadsheetDocument.WorkbookPart
            Dim worksheetPart As WorksheetPart
            Dim text As String
            Dim reader As OpenXmlReader
            Dim objWriter As System.IO.StreamWriter
 
            For Each s As Sheet In workbookPart.Workbook.Sheets
                If s.Name = "Products" Then
                    worksheetPart = workbookPart.GetPartById(s.Id)
                    reader = OpenXmlReader.Create(worksheetPart)
                    'Dim stringTable = workbookPart.GetPartsOfType(Of SharedStringTable).FirstOrDefault()
 
                    While reader.Read()
                        If reader.ElementType = GetType(CellValue) Then
                            text = reader.GetText()
                            Debug.Print(text)
                        End If
                    End While
                    MsgBox("Products complete")
                ElseIf s.Name = "Contract Pricing" Then
                    worksheetPart = workbookPart.GetPartById(s.Id)
                    reader = OpenXmlReader.Create(worksheetPart)
                    While reader.Read()
                        If reader.ElementType = GetType(CellValue) Then
                            text = reader.GetText()
                        End If
                    End While
                    MsgBox("Price complete")
                End If
            Next
        End Using
    End Sub
 
End Class
G