2009-05-28 12 views
5

Bir Excel dosyasından bazı verileri ayıklamak için ADO.net kullanmak istiyorum. Bu süreç internette oldukça iyi belgelenmiştir. Yakalamam, dosyamın bir kullanıcı tarafından yüklendiğini ve böylece yalnızca bellekte bir bayt dizisi olarak var olduğunu. Güvenlik ve performans nedeniyle bu dosyayı diske yazmamayı tercih ederim.ADO.NET ile bir bellek içi Excel dosyasını (bayt dizisi) okuyor musunuz?

Bayt dizisine bağlanan bir bağlantı dizesi oluşturmanın bir yolu var mı? Ya da belki de bu diziyi aslında bellekte saklanan bir dosya olarak (sanırım bir RAM diski gibi) göstermeye mi çalışıyorsunuz?

+0

bellek sizi tutan .NET-nesnenin türü Excel-: Örneğin böyle bir şeyle SpreadSheetGear.Net kullanmak - Aklıma

tek yolu ikili Excel verileri kendiniz okumaktır dosya? –

+0

Bir bayt dizisi. Soruyu güncelleyeceğim. –

cevap

5

Yalnızca bellekte mevcutsa bağlanamazsınız. OLE da (bir sunucu uygulaması için Office Automation kullanarak başlangıç ​​ile zayıf tasarım olsa da) karar verilir.

SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(*stream*); 
+0

SpreadsheetGear ayrıca bir IWorkbooks.OpenFromMemory (byte [] data) yöntemine sahiptir, böylece doğrudan bir byte dizisinden ve David tarafından önerilen bir akıştan okuyabilirsiniz. –

2

gibi Zengin B onun cevabını söyledi, ben bir standart uzatmadan içinde bağlamak mümkün olduğunu düşünmüyorum. Sadece bellekte asılı olan bir excel dosyasına net yolu. En basit çalışma muhtemelen excel dosyasını diske kaydetmek, bağlantı dizinizle Jet motorunu kullanarak bağlanmak ve daha sonra tüm görevlerinizi yerine getirdiğinizde dosyadan kurtulmak olacaktır. Bu performans açısından ideal olmayabilir, ancak saçınızı çekmenize neden olacak belirli bir WTFiness eksiktir.