Utiliser OpenXmlReader

J'ai hate de recourir à StackOverflow pour quelque chose d'aussi (apparemment) de base, mais je me bats avec Microsoft depuis quelques heures et semblent se heurter à une impasse. Je suis en train de lire (grand) Excel 2007+ feuilles de calcul, et Google a eu la gentillesse de m'informer qu'en utilisant le SDK OpenXml est un joli choix populaire. J'ai donc fait la chose d'un coup, lire quelques tutoriels, vérifié à Microsoft de la bibliothèque de pages, et a eu très peu d'entre eux tous.

Je suis à l'aide d'un petit test de la feuille de calcul avec une seule colonne de nombres et de l'une des chaînes à grande échelle des tests viendra plus tard. J'ai essayé plusieurs implémentations similaire à celui que je suis sur le point de publier, et aucun d'eux de lire les données. Le code ci-dessous a été pour la plupart prises à partir d'un autre StackOverflow fil, où il semble avoir travaillé - pas pour moi. J'ai pensé que je vais avoir les gars, vous cochez/debug/aider avec cette version, parce que ça risque d'être moins brisées que tout ce que j'ai écrit aujourd'hui.

static void ReadExcelFileSAX(string fileName)
    {
        using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, true))
        {
            WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
            WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();

            OpenXmlPartReader reader = new OpenXmlPartReader(worksheetPart);
            string text;
            string rowNum;
            while (reader.Read())
            {
                if (reader.ElementType == typeof(Row))
                {
                    do
                    {
                        if (reader.HasAttributes)
                        {
                            rowNum = reader.Attributes.First(a => a.LocalName == "r").Value;
                            Console.Write("rowNum: " + rowNum); //we never even get here, I tested it with a breakpoint
                        }

                    } while (reader.ReadNextSibling()); //Skip to the next row
                    Console.ReadKey();
                    break; //We just looped through all the rows so no need to continue reading the worksheet
                }
                if (reader.ElementType == typeof(Cell))
                {

                }

                if (reader.ElementType != typeof(Worksheet)) //Dont' want to skip the contents of the worksheet
                    reader.Skip(); //Skip contents of any node before finding the first row.
            }
            reader.Close();
            Console.WriteLine();
            Console.ReadKey();
        }
    }

Et, sur une note de côté, il y a aucune bonne solution de rechange à l'aide du SDK OpenXml j'ai raté quelque sorte?

source d'informationauteur Argent