ملء Excel مع البيانات من LINQ إلى استعلام SQL
سؤال
وأنا أحاول أن ترسل بعض البيانات من استعلام 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 .