الإرشادات التفصيلية: مكتب برمجة (C# و Visual Basic)
Visual Studio 2010تقدم ميزات جديدة في C# و Visual Basic لتحسين برامج Microsoft Office. كل لغة قامت بإضافة ميزات موجودة بالفعل في لغة أخرى.
الميزات الجديدة تتضمن الوسيطات المسماة والاختيارية في C# ، ترجع قيم لها نوع dynamic, في البرمجة، القدرة على حذف COM refكلمة أساسية ثم الوصول إلى الخصائص المفهرسة. تتضمن الميزات الجديدة في Visual Basic خصائص تنفيذ تلقائي, عبارات في تعبيرات لامدا, و مُهيآت المجموعة.
كلا اللغتين تمكن تضمين نوع معلومات مما يسمح بتوزيع التجميعات التي تتعامل مع مكونات COM دون نشر التجميعات إمكانية التشغيل المتداخل الأساسية (PIAs) إلى كمبيوتر المستخدم. لمزيد من المعلومات، راجع الإرشادات التفصيلية: تضمين أنواع من التجميعات مدارة (C# و Visual Basic).
توضح هذه المعاينة ميزات جديدة في سياق برمجة Office لكن العديد منها مفيدة أيضاً بشكل للبرمجة العامة . في المعاينة, سيتم أولاً إستخدام تطبيق Excel 2007 add-in لإنشاء مصنف Excel. ثم يتم إنشاء مستند Word يحتوي على إرتباط للمصنف. وأخيراً، ستشاهد كيف يمكن تشغيل التبعية PIA وإيقاف تشغيله.
المتطلبات الأساسية
يجب أن يكون لديك Microsoft Office Excel 2007 و Microsoft Office Word 2007 مثبتان في جهازك لإكمال هذه معاينة.
إذا كنت تستخدم نظام تشغيل أقدم من Windows Vista، تأكد من أن ال .NET Framework 2.0 مثبت.
ملاحظة
قد يعرض جهاز الكمبيوتر الخاص بك أسماء أو مواقع مختلفة لبعض عناصر واجهة مستخدم Visual Studio في الإرشادات التالية. يحدد كل من إصدار Visual Studio لديك والإعدادات المستخدمة هذه العناصر. لمزيد من المعلومات، راجع العمل مع إعدادات.
لإعداد تطبيق add-in Excel 2007
ابدأ Visual Studio.
من القائمة File (ملف)، أشر إلى New (جديد)، ثم انقر فوق Project (مشروع).
في الجزء فئات القوالب جزء, توسيع Visual Basic Visual C# , توسيع أو Office ثم انقر فوق 2007 .
في الجزء القوالب , انقر فوق Excel 2007 إضافة-in .
انظر إلى أعلى جزء القوالب للتأكد من ظهور .NET Framework 4 في مربع إطار العمل الهدف .
نوع اسمًا للمشروع في مربع الاسم ، إذا أردت.
انقر فوق موافق.
سوف يظهر المشروع الجديد في مستكشف الحلول.
لإضافة مراجع
في مستكشف الحل، ينقر على اليمين اسم مشروع الخاص بك ومن ثم انقر فوق إضافة مرجع. يظهر مربع الحوار Add a Script (إضافة برنامج نصي).
في التبويب .NET تحديد Microsoft.Office.Interop.Excel ، الإصدار 12.0.0.0, في القائمة مكون الاسم، ومن ثم اضغط باستمرار المفتاح زر'Ctrl' وتحديد Microsoft.Office.Interop.Word ، الإصدار 12.0.0.0.
انقر فوق موافق.
لإضافة عبارات عمليات الاستيراد الضرورية أو إستخدام توجيهات
في مستكشف الحلول ، انقر بزر الماوس الأيمن فوق الملف ThisAddIn.cs أو ThisAddIn.vb ، ثم انقر فوق عرض التعليمات البرمجية .
قم بإضافة العبارة التالية Imports(Visual Basic) أو توجيهات using (C#) إلى قمة ملف التعليمات البرمجية إذا لم تكن بالفعل موجودة.
Imports Microsoft.Office.Interop
using System.Collections.Generic; using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word;
لإنشاءء قائمة الحسابات البنكية
في مستكشف الحلول, ينقر على اليمين اسم المشروع انقر فوق إضافةومن ثم انقر فوق فئة. قم بتسمية الفئة Account.vb إذا كنت تستخدم Visual Basic أو Account.cs إذا كنت تستخدم C#. انقر فوق إضافة.
إستبدال تعريف الفئة Account مع التعليمات البرمجية التالية. إستخدام ملفات تعريف الفئات تنفيذ تلقائي خصائص ، جديداً لـ Visual Basic في Visual Studio 2010. لمزيد من المعلومات، راجع خصائص يتم التنفيذ التلقائي.
Public Class Account Property ID As Integer = -1 Property Balance As Double End Class
class Account { public int ID { get; set; } public double Balance { get; set; } }
لإنشاء القائمة bankAccounts التي تحتوي على حسابين ، قم بإضافة تعليمات برمجية التالية إلى الأسلوب ThisAddIn_Startupفي ThisAddIn.vb أو ThisAddIn.cs. إستخدام تعريفات القائمة المُهيآت مجموعة ، جديد إلى Visual Basic في Visual Studio 2010. لمزيد من المعلومات، راجع نظرة عامة حول المُهيآت مجموعة (Visual Basic).
Dim bankAccounts As New List(Of Account) From { New Account With { .ID = 345, .Balance = 541.27 }, New Account With { .ID = 123, .Balance = -127.44 } }
var bankAccounts = new List<Account> { new Account { ID = 345, Balance = 541.27 }, new Account { ID = 123, Balance = -127.44 } };
لتصدير البيانات إلى Excel
في الملف نفسه، قم بإضافة الأسلوب التالي إلى الفئة ThisAddIn. تعيين أسلوب لتعيين مصنف Excel و تصدير بيانات إليه.
Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account), ByVal DisplayAction As Action(Of Account, Excel.Range)) With Me.Application ' Add a new Excel workbook. .Workbooks.Add() .Visible = True .Range("A1").Value = "ID" .Range("B1").Value = "Balance" .Range("A2").Select() For Each ac In accounts DisplayAction(ac, .ActiveCell) .ActiveCell.Offset(1, 0).Select() Next ' Copy the results to the Clipboard. .Range("A1:B3").Copy() End With End Sub
void DisplayInExcel(IEnumerable<Account> accounts, Action<Account, Excel.Range> DisplayFunc) { var excelApp = this.Application; // Add a new Excel workbook. excelApp.Workbooks.Add(); excelApp.Visible = true; excelApp.Range["A1"].Value = "ID"; excelApp.Range["B1"].Value = "Balance"; excelApp.Range["A2"].Select(); foreach (var ac in accounts) { DisplayFunc(ac, excelApp.ActiveCell); excelApp.ActiveCell.Offset[1, 0].Select(); } // Copy the results to the Clipboard. excelApp.Range["A1:B3"].Copy(); }
يتم إستخدام اثنين C# الميزات الجديدة في هذه الطريقة. كل من هذه الميزات موجودة مسبقاً في Visual Basic.
يحتوي الأسلوب إضافة معلمة اختيارية " لتحديد قالب خاصة. معلمات اختيارية في جديدVisual C# 2010، تتيح لك بحذف وسيطة للمعلمة ذلك إذا كنت ترغب في إستخدامها لقيمة افتراضية. بسبب عدم توفر أية وسيطات يتم إرسالها في المثال السابق، Addيستخدم القالب الافتراضي ويقوم بإنشاء مصنف جديد. المكافئ كشف في الإصدارات السابقة من C# تتطلب وسيطة العنصر نائب: excelApp.Workbooks.Add(Type.Missing).
لمزيد من المعلومات، راجع وسيطات مسماة واختياري (C# البرمجة الدليل).
Rangeو Offsetخصائص الكائن نطاق إستخدام الميزة فهرسة الخصائص. تمكّن هذه الميزة تستهلك هذه الخصائص من أنواع COM بإستخدام التالية C النموذجية # بناء الجملة. الخصائص المفهرسة تتيح أيضًا إمكانية إستخدام الكائن Value Range دون الحاجة إلى إستخدام الخاصية Value2. خاصية Valueهي مفهرسة ولكن الفهرس اختيارية. الوسائط الاختيارية الخصائص المفهرسة والعمل معاً في المثال التالي.
// Visual C# 2010 provides indexed properties for COM programming. excelApp.Range["A1"].Value = "ID"; excelApp.ActiveCell.Offset[1, 0].Select();
في الإصدارات السابقة من اللغة, بناء الجملة الخاص التالي مطلوب.
// In Visual C# 2008, you cannot access the Range, Offset, and Value // properties directly. excelApp.get_Range("A1").Value2 = "ID"; excelApp.ActiveCell.get_Offset(1, 0).Select();
لا يمكن إنشاء المفهرسة خصائص خاص بك. تدعم ميزة استهلاك الخصائص المفهرسة موجود فقط.
لمزيد من المعلومات، راجع How to: Use Indexed Properties in COM Interop Programming (C# Programming Guide).
قم بإضافة التعليمات البرمجية التالية في نهاية DisplayInExcel لضبط عرض الأعمدة لاحتواء المحتوى.
' Add the following two lines at the end of the With statement. .Columns(1).AutoFit() .Columns(2).AutoFit()
excelApp.Columns[1].AutoFit(); excelApp.Columns[2].AutoFit();
توضح هذه الإضافات آخر ميزة جديدة في C# 2010: تتعارض القيم Object التي يتم إرجاعها من الأجهزة المضيفة COM مثل Office كما لو كان لديها نوع ديناميكي . ويحدث هذا تلقائياً عند تعيين قيمته الافتراضية يضمّن أنواع التوافق True, أو بشكل مساوي عندما يتم الإشارة إلى التجميع بواسطة برنامج التحويل البرمجي الخيار رابط/. كتابة dynamicتسمح بربط مسبقة التوفرة في Visual Basic وابتعاد عن النوع الصريح المطلوب في تجنب #Visual C 2008 والإصدارات السابقة من الغة.
على سبيل المثال، excelApp.Columns[1]إرجاع Object, و AutoFitهو Excel أسلوب نطاق. بدون dynamic، يجب تحويل كائن تم إرجاعه بواسطة excelApp.Columns[1]كمثيل ل Rangeقبل استدعاء الأسلوب AutoFit.
// Casting is required in Visual C# 2008. ((Excel.Range)excelApp.Columns[1]).AutoFit(); // Casting is not required in Visual C# 2010. excelApp.Columns[1].AutoFit();
للحصول على معلومات أكثر حول تضمين أنواع إمكانية التشغيل المتداخل راجع الإجراءات "العثور على مرجع PIA" و "استعادة التبعية PIA" لاحقًا في هذا الموضوع. لمزيد من المعلومات حول dynamic انظر الحيوي (C# مرجع) or استخدام نوع الحيوي (C# برمجة الدليل).
لإستدعاء DisplayInExcel
قم بإضافة تعليمات برمجية تالية في نهاية الأسلوب ThisAddIn_StartUp. المكالمة إلى DisplayInExcelتحتوي على اثنين الوسيطات. الوسيطة الأولى هي اسم قائمة الحسابات لمعالجتها. الوسيطة الثانية هي تعبير lambda متعدد الأسطر التي تعرف كيفية إرتباط البيانات بشكل إلى معالجتها. قيم IDو balanceيتم عرضها حساب في الخلايا المجاورة ويتم عرض الصف بالأحمر إذا كانت التوازن أقل من صفر. التعابير لامدا متعدد الأسطر ميزة جديدة في Visual Basic 2010. لمزيد من المعلومات، راجع التعبيرات لامدا.
DisplayInExcel(bankAccounts, Sub(account, cell) ' This multiline lambda expression sets custom ' processing rules for the bankAccounts. cell.Value = account.ID cell.Offset(0, 1).Value = account.Balance If account.Balance < 0 Then cell.Interior.Color = RGB(255, 0, 0) cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) End If End Sub)
DisplayInExcel(bankAccounts, (account, cell) => // This multiline lambda expression sets custom processing rules // for the bankAccounts. { cell.Value = account.ID; cell.Offset[0, 1].Value = account.Balance; if (account.Balance < 0) { cell.Interior.Color = 255; cell.Offset[0, 1].Interior.Color = 255; } });
إضغط CTRL + F5 لتشغيل الصفحة. تظهر ورقة عمل Excel الذي يحتوي على البيانات من الحسابات.
فتح مستند Word
قم بإضافة تعليمات برمجية التالية في إنهاء ThisAddIn_StartUpالأسلوب لإنشاء مستند Word التي تحتوي على إرتباط إلى مصنف Excel.
Dim wordApp As New Word.Application wordApp.Visible = True wordApp.Documents.Add() wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
var wordApp = new Word.Application(); wordApp.Visible = true; wordApp.Documents.Add(); wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
هذا تعليمات برمجية يوضح العديد من الميزات الجديدة في C#: القدرة على حذف كلمة البرمجة الأساسية ref في COM و تسمى الوسيطات، ثم وسيطات اختيارية. كل من هذه الميزات موجودة مسبقاً في Visual Basic. على أسلوب PasteSpecial معلمات سبعة كل منها معرفة كمعلمات مرجع اختيارية. قبل #Visual C 2010 , كان واجب عليك تعريف متغيرات الكائن لإستخدام كوسائط لمعلمات سبعة حتى إذا كان لديك أية قيم ذات معنى ليرسل في. الوسيطات المسماة والاختيارية تمكنك من تعيين معلمات تريد للوصول حسب الاسم أو ليرسل الوسيطات إلى تلك المعلمات. في هذا المثال، يتم إرسال الوسيطات إلى تشير إلى أنه يجب إنشاء إرتباط إلى المصنف في "الحافظة" (المعلمة Link) ، والذي كان الإرتباط ليتم عرضها في مستند Word كرمز (المعلمة DisplayAsIcon). Visual C# 2010 يمكّنك أيضاً من حذف الكلمة أساسية refلهذه الوسائط. يقارن مقطع تعليمات برمجية التالية من #Visual C 2008 مع خط واحد المطلوبة في #Visual C 2010:
// Call to PasteSpecial in Visual C# 2008. object iconIndex = Type.Missing; object link = true; object placement = Type.Missing; object displayAsIcon = true; object dataType = Type.Missing; object iconFileName = Type.Missing; object iconLabel = Type.Missing; wordApp.Selection.PasteSpecial(ref iconIndex, ref link, ref placement, ref displayAsIcon, ref dataType, ref iconFileName, ref iconLabel); // Call to PasteSpecial in Visual C# 2010. wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
لتشغيل التطبيق.
- إضغط على F5 لتشغيل التطبيق. يبدأ تشغيل Excel ويعرض جدول يحتوي على المعلومات من الحسابين في bankAccounts. ثم يظهر مستند Word يحتوي على إرتباط إلى جدول Excel.
لمسح المشاريع المكتملة
- في Visual Studio، على القائمة Build، انقر فوق Clean Solution. وإلا، الوظيفة الإضافية ستعمل كل مرة تقوم فيها بفتح Excel تشغيل الكمبيوتر الخاص بك.
للعثور على مرجع PIA
القائمة ابدأ ، انقر فوق كل البرامج. بعد ذلك انقر فوق Microsoft Visual Studio 2010 ، ثم أدوات Visual Studio ، ثم موجه الأوامر Visual Studio (2010).
اكتب ildasm في نافذة موجه الأوامر Visual Studio (2010) واضغط Enter الزر. يظهر نافذة DASM IL.
من القائمة "ملف"، انقر فوق "فتح". انقر مزودجا 2010 Visual Studioومن ثم انقر مزودجا على المشاريع. افتح مجلد المشروع ثم ابحث في مجلد bin/يصحح dll. اسم المشروع. ينقر مزودجا dll. اسم المشروع. تقوم نافذة جديد يعرض سمات المشروع الخاص بك بالإضافة إلى مراجع الوحدات النمطية والتعليمات التجميعات الأخرى. لاحظ أن مساحات الأسماءMicrosoft.Office.Interop.Excel و Microsoft.Office.Interop.Wordمضمنة في التجميع. بشكل افتراضي في Visual Studio 2010 يستورد المحول البرمجي أنواع تحتاج من PIA المشار إليه في التجميع الخاص بك.
لمزيد من المعلومات، راجع كيفية: عرض المحتويات التجميع.
انقر نقرًا مزدوجًا فوق رمز بيان. تظهر نافذة تحتوي على قائمة التجميعات التي تحتوي على عناصر الإشارة إلى المشروع. Microsoft.Office.Interop.ExcelوMicrosoft.Office.Interop.Wordلم يتم مُضمنها في قائمة. بسبب الأنواع التي يحتاجها المشروع قم تم استيرادها في التجميع الخاص بك, المراجع في PIA غير المطلوبة. يؤدي توزيع أسهل. لا تلزم أن تكون ال PIAs موجودة على الكمبيوتر الخاص بالمستخدم و لأن تطبيق لا يتطلب نشر إصدار محدد من PIA, يمكن تصميم تطبيقات للعمل مع إصدارات متعددة من Office ، بشرط أن APIs الضرورية موجودة في الكل الإصدارات.
لأنه لم يعد توزيع "واجهات برمجة التطبيقات" PIAs ضرورياً يمكنك إنشاء أحد تطبيقات في سيناريوهات متقدمة يعمل مع إصدارات متعددة من Office بما فيها الإصدارات السابقة. يعمل هذا على الرغم من ذلك، إذا كانت التعليمة البرمجية الخاصة بك لا يستخدم أي واجهات برمجة التطبيقات التي لا تتوفر في إصدار Office الذي تعمل به. وجود واجهة برمجة التطبيقات API لا تكون واضحة في الإصدارات السابقة و لهذا لا يوصى بإستخدام الإصدارات السابقة من Office.
ملاحظة
لم ينشر API Officeقبل Office 2003. الطريقة الوحيدة لإنشاء تجميع التوافق لـ Office 2002 أو الإصدارات السابقة هي عن طريق استيراد مرجع COM.
يغلق نافذة بيان ونافذة التجميع.
لاستعادة التبعية PIA
في مستكشف الحلول، انقر فوق الزر عرض جميع الملفات. قم بتوسيع المجلد مراجع وتحديد Microsoft.Office.Interop.Excel . اضغط F4 لعرض إطار إغلاق البرنامج.
في النافذة s Propertie ،قم بتغيير الخاصية ضمّن أنواع Interop من صواب إلى خطأ.
قم بتكرار الخطوتين 1 و 2 في هذا الإجراء Microsoft.Office.Interop.Word.
في C# ، التعليق الخروج الاستدعاءات اثنين إلى Autofitفي إنهاء الأسلوب DisplayInExcel.
اضغط F5 إلى تحقق من أن المشروع لا يزال يعمل بشكل صحيح.
كرر الخطوات 1-3 من الإجراء السابق إلى فتح نافذة التجميع. لاحظ Microsoft.Office.Interop.Wordذلك Microsoft.Office.Interop.Excelلم تعد في قائمة التجميعات المضمنة.
انقر نقر مزودجا على رمز البيان ثم مرر خلال قائمة التجميعات المشار إليه. كلا Microsoft.Office.Interop.Word و Microsoft.Office.Interop.Excel في القائمة. لأن تطبيق مراجع واجهة برامج التطبيق Word وExcel كما تم تعيين الخاصيةيضمّن أنواع Interop إلى خطأ ، كلا التجميعات يجب أن تكون موجودة على كمبيوتر المستخدم النهائي.
راجع أيضًا:
المهام
الإرشادات التفصيلية: تضمين أنواع من التجميعات مدارة (C# و Visual Basic)
الإرشادات التفصيلية: إنشاء كلمة الأول تطبيق مستوى الوظيفة الإضافية لـ Excel
المرجع
خصائص يتم التنفيذ التلقائي (C# البرمجة الدليل)
كائن و مجموعة المُهيآت (C# البرمجة الدليل)
التعبيرات لامدا (C# البرمجة الدليل)
إمكانية التشغيل المتداخل (C# البرمجة الدليل)
المبادئ
نظرة عامة حول المُهيآت مجموعة (Visual Basic)
وسيطات التمرير حسب الموضع ، حسب الاسم
وسيطات مسماة واختياري (C# البرمجة الدليل)
موارد أخرى
استخدام نوع الحيوي (C# برمجة الدليل)
How to: Use Indexed Properties in COM Interop Programming (C# Programming Guide)
الإرشادات التفصيلية: تضمين معلومات النوع من التجميعات (#C و Visual Basic)