سؤال

وأنا أحاول أن ترسل بعض البيانات من استعلام LINQ في C # لورقة سرعة Excel باستخدام OLE

وعندي استفسار من هذا القبيل:

Var data = from d in db.{MyTable}
           where d.Name = "Test"
           select d;

ولدي كائن Excel OLE تعمل بشكل جيد، أنا فقط لا يمكن معرفة كيفية تعبئة الخلايا في Excel مع البيانات من الاستعلام LINQ.

وPS: أنا باستخدام Excel 2003 إذا أن يجعل أي فرق

ويمكن لأي شخص أن يساعدني في هذا؟

هل كانت مفيدة؟

المحلول

وإرسال الأوامر OLE الفردية لكل خلية إكسل بطيئة جدا وبالتالي فإن الحل هو خلق مجموعة وجوه مثل هذا:

int noOfRows = data.Count - 1;
int noOfColumns = mydataclass.GetType().GetProperties().Count() - 1;
Object[noOfRows, noOfColumns] myArray;

وإرسال مجموعة الكائن يسمح لك بإرسال خليط من أنواع البيانات على سبيل المثال سلسلة، صحيحا، التاريخ وما إلى ذلك، إذا كنت تعرف أن البيانات عن النص على سبيل المثال، يمكنك إرسالها فقط صفيف سلسلة.

والمصفوفة يجب أن يتم ملؤها من الاستعلام إما عن طريق تعيين كل قيمة فردية أو ربما باستخدام انعكاس للحصول على خصائص الكائن البيانات. ثم يمكنك إرسال مجموعة إلى Excel مثل هذا:

XLOLESheetobj.Range("A1","Z20").Value = myArray;

ويمكنك استبدال Z20 مع عدد الأعمدة -> شار + عدد الصفوف -> سلسلة.

نصائح أخرى

وأفترض أنك لا تستخدم OLE في سيناريو شبكة الإنترنت، لأنها ستفشل في نهاية المطاف.

إذا كنت بحاجة فقط البيانات الخام، يمكنك تفريغ إلى ملف نصي المفصول:

وخطوط فار = data.Select (د => d.Name + '\ ر' + d.AnotherProperty + ...)؛

والخيار الأفضل هو استخدام تنسيق Excel XML. لقد فعلت ذلك لبلوق وظيفة حول كيفية تحقيق ذلك: HTTP: //www.aaron -powell.com/blog.aspx؟id=1237

وأنت سيكون الخيار الآخر أن تبحث في مزود LINQ لبرنامج Excel - HTTP: //www.codeplex. كوم / xlslinq .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top