Lecture d'un classeur Excel via Open XML SDK
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:
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