إنشاء وظيفة Excel الإضافية في د

5

 

التالي في سلسلتي على وظائف Excel الإضافية هي تكامل مع لغة البرمجة D.

“D هي غرض عام لغة برمجة مع كتابة ثابتة ، والوصول على مستوى الأنظمة ، وبناء جملة مثل C. باستخدام لغة البرمجة D ، اكتب بسرعة ، واقرأ بسرعة ، وشغل بسرعة “(موقع D)

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

بدلاً من لف الكود في Excel -DNA الوظيفة الإضافية كما فعلت مع مثال Rust ، يوجد غلاف D حول Excel SDK يسمى Excel-D. توجد أيضًا أداة تسمى autowrap يمكنها التفاف كود D لـ Python و Excel و C # بحيث يمكن أيضًا اتباع نهج Excel-DNA. في هذا المنشور سأستخدم النهج الأصلي بالكامل.

مشروع []

تسمى أداة بناء D القياسية dub. يمكننا استخدامه لإنشاء مشروعنا وبناء xll.

 $ dub init exceld تنسيق وصفة الحزمة (sdl / json)  : sdl الاسم [exceld]: الوصف [A minimal D application.]: اسم المؤلف []: الترخيص [proprietary]: سلسلة حقوق النشر [Copyright ┬® 2020, ]: أضف تبعية (اتركها فارغة لـ تخطي) []: excel-d إضافة التبعية excel-d ~> 0.5.8 إضافة التبعية (اتركه فارغًا للتخطي) []: تم إنشاء مشروع فارغ بنجاح في "exceld".  تم إنشاء الحزمة بنجاح في exceld 

 

بعد ذلك احذف source / app.d وأنشئ main.d و funcs.d في المجلد المصدر.

main.d


يستورد xlld ؛ mixin ( التفاف الكل ! ( __وحدة__، “funcs” )) ؛

 

funcs.d

يستورد Excel screenshot xlld 

Excel screenshot ؛ @يسجل Excel screenshot ( Excel screenshot نص الوسيطة Excel screenshot ( Excel screenshot "المصفوفة المراد إضافتها" ) ، موضوع المساعدة Excel screenshot ( Excel screenshot "إضافة كل الخلايا في مصفوفة" Excel screenshot) ، Excel screenshot الوظيفةالمساعدة Excel screenshot ( Excel screenshot "إضافة كل الخلايا في مجموعة مصفوفة") ، Excel screenshot تعليمات الحجة (["The array to add"])) مزدوج FuncAddEverything ( مزدوج [] [] أرغس ) ليس @ nogc { يستورد قياسية . خوارزمية : Excel screenshotيطوى ؛ يستورد الأمراض المنقولة جنسياً . Excel screenshot الرياضيات Excel screenshot: Excel screenshot هو نان Excel screenshot ؛ مزدوج أرجع =Excel screenshot 0 Excel screenshot ؛ foreach Excel screenshot ( Excel screenshotصف ؛ أرجس Excel screenshot) ret += صف . يطوى ! ( Excel screenshotأ ، Excel screenshotب) Excel screenshot=> Excel screenshotب. هو نان Excel screenshot؟ Excel screenshot 0.0 : Excel screenshotأ Excel screenshot + ب Excel screenshot) ( Excel screenshot 0.0 Excel screenshot) ؛ إرجاع Excel screenshot متقاعد Excel screenshot ؛ Excel screenshot}

قم بتحرير ملف البناء dub.sdl ليحتوي على التالي:


اسم “ممتاز” وصف “تطبيق D.” المؤلفون "" حقوق النشر Excel screenshot "Copyright © 2020،" رخصة “امتلاكي” الاعتماد Excel screenshot “excel-d” الإصدار = “~> 0.5.7 بوصة نوع الهدف “dynamicLibrary” dflags “- dip25” Excel screenshot “- dip1000” إعدادات “xll” Excel screenshot { Excel screenshot preBuildCommands Excel screenshot “dub run -c def –nodeps -q – exceld.def ” Excel screenshotملفات المصدر “exceld.def” Excel screenshot # يجب لديك ال ملائم 32 / 64 قليلا Excel SDK xlcall32 . ليب في ال طريق من ال تطبيق # للأسف أنهم ‘ إعادة على حد سواء مسمى xlcall32 . ليب ليبس Excel screenshot “xlcall32” Excel screenshot postBuildCommands Excel screenshot "نسخ / y exceld.dll exceld.xll" Excel screenshot} إعدادات Excel screenshot “justxll” Excel screenshot { ملفات المصدر Excel screenshot “exceld.def” Excel screenshot # يجب لديك ال ملائم Excel screenshot 32 Excel screenshot / Excel screenshot 64 قليلا Excel SDK xlcall32

.

ليب فيالطريقمنالتطبيق # للأسفأنهم ‘ إعادةعلى حد سواءمسمى xlcall32 Excel screenshot. Excel screenshot. Excel screenshot ليب Excel screenshot ليبس Excel screenshot “xlcall32” Excel screenshot postBuildCommands “نسخ / y exceld.dll exceld.xll” Excel screenshot} Excel screenshot // هذا يبني ثنائيًا يكتب ملف .def اللازم // لتصدير الوظائف إعدادات “def” {نوع الهدف”تنفيذ” targetName “write_def” إصدارات “exceldDef” }

أخيرًا ، انسخ XLCALL32 المطلوب ملف .LIB من تثبيت Excel SDK الخاص بك (يمكن تنزيله من Microsoft) وتشغيل أمر الإنشاء:


بناء $ dub – -arch=x86_mscoff # للإصدار 32 بت $ dub –arch=x86_64 # لـ 64 بت

يجب أن يؤدي هذا إلى إنشاء ملف “exceld.xll” في دليل المستوى الأعلى. إذا فتحنا الوظيفة الإضافية excel (يمكن استخدام explorer.exe exceld.xll في سطر الأوامر) يمكننا استخدام الوظيفة في جدول بيانات.

مع الأخذ في الاعتبار لم أكتب أبدًا أي D قبل أن أتمكن من الحصول على UDF بسيط وتشغيله دون الكثير من المتاعب. يبدو أن Excel-d خيار جيد جدًا إذا كنت ترغب في إنشاء UDFs مخصصة ، ولكن في الوقت الحالي لا يدعم امتدادات واجهة المستخدم. أيضًا ، هناك نقص في التوثيق على مستوى المبتدئين ، لذا فإن أفضل طريقة لمعرفة المزيد هي من خلال قراءة الكود في Excel-d repo.

[Copyright ┬® 2020, ]