OpenXmlReader verwenden

Ich hasse es, auf StackOverflow zurückzugreifen, um etwas (scheinbar) Grundlegendes zu finden, aber ich habe in den letzten Stunden mit Microsoft gekämpft und scheine in eine Sackgasse zu geraten. Ich versuche, (große) Excel 2007+ -Tabellen zu lesen, und Google hat mir freundlicherweise mitgeteilt, dass die Verwendung des OpenXml SDK eine recht beliebte Wahl ist. Also habe ich das Ding ausprobiert, einige Tutorials gelesen, Microsofts eigene Bibliotheksseiten durchgesehen und sehr wenig herausgeholt.

Ich verwende eine kleine Testtabelle mit nur einer Spalte mit Zahlen und einer Zeichenfolge - Tests in großem Maßstab werden später durchgeführt. Ich habe mehrere Implementierungen ausprobiert, die denen ähneln, die ich veröffentlichen möchte, und keine von ihnen hat Daten gelesen. Der folgende Code stammt größtenteils aus einem anderen StackOverflow-Thread, in dem er anscheinend funktioniert hat - bei mir nicht. Ich dachte, ich lasse euch diese Version überprüfen / debuggen / helfen, weil sie wahrscheinlich weniger kaputt sein wird als alles, was ich heute geschrieben habe.

<code>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();
        }
    }
</code>

Gibt es eine gute Alternative zum OpenXml SDK, das ich irgendwie vermisst habe?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage