का उपयोग करके मुझे स्टैक ओवरव्लो का कुछ ऐसा (मूल रूप से) मूलभूत उपयोग करने से नफरत है, लेकिन मैं पिछले कुछ घंटों से माइक्रोसॉफ्ट के साथ लड़ रहा हूं और ऐसा लगता है कि यह एक मृत अंत है। मैं एक्सेल 2007+ स्प्रेडशीट्स (बड़े) को पढ़ने की कोशिश कर रहा हूं, और Google ने मुझे सूचित किया है कि ओपनएक्सएमएल एसडीके का उपयोग करना एक बहुत लोकप्रिय विकल्प है। तो मैंने चीज़ को एक शॉट दिया, कुछ ट्यूटोरियल पढ़े, माइक्रोसॉफ्ट के अपने पुस्तकालय पृष्ठों की जांच की, और उन सभी में से बहुत कम मिला।OpenXmlReader
मैं संख्याओं के केवल एक कॉलम और तारों में से एक के साथ एक छोटी टेस्ट स्प्रेडशीट का उपयोग कर रहा हूं - बड़े पैमाने पर परीक्षण बाद में आ जाएगा। मैंने पोस्ट किए जाने वाले एक के समान कई कार्यान्वयन की कोशिश की है, और उनमें से कोई भी डेटा पढ़ता नहीं है। नीचे दिया गया कोड ज्यादातर अन्य स्टैक ओवरफ्लो थ्रेड से लिया गया था, जहां ऐसा लगता था - मेरे लिए ऐसा नहीं। मैंने सोचा कि मैं आपके पास इस संस्करण के साथ लोगों की जांच/डीबग/सहायता करूंगा, क्योंकि आज जो कुछ भी मैंने लिखा है उससे कम टूटा होगा।
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();
}
}
और, एक तरफ ध्यान दें पर, OpenXML SDK मैं किसी भी तरह चूक गए उपयोग करने के लिए किसी भी अच्छे विकल्प हैं?
यहां उपलब्ध ओपन एक्सएमएल एसडीके 2.0 उत्पादकता उपकरण का उपयोग करने का प्रयास करें: http://www.microsoft.com/en-us/download/details.aspx?id=5124। यह आपको किसी भी * xlsx * को खोलने और इसकी संरचना को देखने या सी # कोड देखने की अनुमति देता है जो फ़ाइल को फिर से बना सकता है। इस तरह आप देख सकते हैं कि आप जिस फाइल के साथ काम कर रहे हैं उसमें आप कहां पहुंचना चाहते हैं। –