كيفية عبور برنامج Excel باستخدام تطبيق ويب تفاعلي

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







لذا ، اسمي ميخائيل وأنا مدير التكنولوجيا في Exerica. تتمثل إحدى المشكلات التي نحلها في تسهيل عمل المحللين الماليين بالبيانات الرقمية. وعادة ما يعملون مع الوثائق الأصلية للتقارير المالية والإحصائية ، ونوع من الأدوات لإنشاء وصيانة النماذج التحليلية. لقد حدث أن 99٪ من المحللين يعملون في Microsoft Excel ويقومون بأشياء معقدة للغاية هناك. لذلك ، فإن نقلها من Excel إلى حلول أخرى ليس فعالًا ومستحيلًا عمليًا. من الناحية الموضوعية ، لا تصل خدمات "السحابة" الخاصة بجداول البيانات إلى وظائف Excel بعد. ولكن في العالم الحديث ، يجب أن تكون الأدوات ملائمة وتفي بتوقعات المستخدمين: فتح عن طريق النقر بالماوس ، وإجراء بحث مناسب. وسيكون التنفيذ في شكل تطبيقات مختلفة غير ذات صلة بعيدًا تمامًا عن توقعات المستخدم.



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











ما كان لدينا بالفعل



بحلول الوقت الذي بدأنا فيه تنفيذ التفاعل التفاعلي مع Excel بالشكل الموضح في هذه المقالة ، كان لدينا بالفعل قاعدة بيانات في MongoDB ، وخلفية في شكل واجهة برمجة تطبيقات REST في .NET Core ، و SPA أمامي في Angular ، وبعض الخدمات الأخرى. في هذه المرحلة ، جربنا بالفعل خيارات مختلفة للدمج في تطبيقات جداول البيانات ، بما في ذلك Excel ، وكلها لم تتجاوز MVP ، ولكن هذا موضوع لمقال منفصل.







ربط البيانات



في Excel ، هناك أداتان شائعتان يمكنك من خلالهما حل مشكلة ربط البيانات في جدول ببيانات في النظام: RTD (RealTimeData) و UDF (وظائف محددة بواسطة المستخدم). يعتبر Pure RTD أقل سهولة في الاستخدام من حيث التركيب ويحد من مرونة الحل. باستخدام UDF ، يمكنك إنشاء وظيفة مخصصة ستعمل بطريقة مألوفة لمستخدم Excel. يمكن استخدامه في وظائف أخرى ، فهو يفهم المراجع مثل A1 أو R1C1 ويتصرف بشكل عام كما ينبغي. في الوقت نفسه ، لا أحد يكلف نفسه عناء استخدام آلية RTD لتحديث قيمة الوظيفة (وهو ما فعلناه). قمنا بتطوير UDF في شكل ملحق Excel باستخدام C # و .NET Framework المألوف. استخدمنا مكتبة Excel DNA لتسريع التطوير



بالإضافة إلى UDF ، تقوم الوظيفة الإضافية الخاصة بنا بتنفيذ شريط (شريط أدوات) به إعدادات وبعض الوظائف المفيدة للعمل مع البيانات.



أضف التفاعل



لنقل البيانات إلى Excel ولإقامة التفاعل ، قمنا بتطوير خدمة منفصلة توفر اتصال Websocket باستخدام مكتبة SignalR وهي في الواقع وسيط للرسائل حول الأحداث التي يجب أن تتبادلها الأجزاء الأمامية من النظام في الوقت الفعلي. نسميها خدمة الإعلام.







أدخل البيانات في Excel



في SPA الخاص بنا ، نبرز جميع الأرقام التي اكتشفها النظام. يمكن للمستخدم تحديدها والتنقل خلالها وما إلى ذلك. لإدراج البيانات ، قمنا بتنفيذ 3 آليات لإغلاق حالات الاستخدام المختلفة:



  • السحب والإفلات
  • الإدراج التلقائي عند النقر في SPA
  • نسخ ولصق عبر الحافظة


عندما يبدأ المستخدم في سحب "إنزال" رقم معين من SPA ، يتم تشكيل رابط مع معرف هذا الرقم من نظامنا ( .../unifiedId/005F5549CDD04F8000010405FF06009EB57C0D985CD001) للسحب . عند اللصق في Excel ، تعترض الوظيفة الإضافية الخاصة بنا حدث الإدراج وتوزع النص المدرج باستخدام regexp. عندما يتم العثور على ارتباط صالح على الفور ، فإنه يستبدلها بالصيغة المناسبة =ExrcP(...).



عند النقر فوق رقم في SPA من خلال خدمة الإعلام ، يتم إرسال رسالة إلى الوظيفة الإضافية تحتوي على جميع البيانات اللازمة لإدراج الصيغة. بعد ذلك ، يتم إدراج الصيغة ببساطة في الخلية المحددة حاليًا.



هذه الطرق جيدة عندما يحتاج المستخدم إلى إدخال رقم واحد في نموذجه ، ولكن إذا احتاج إلى نقل الجدول بأكمله أو جزء منه ، فهناك حاجة إلى آلية أخرى. يبدو أن النسخ من خلال الحافظة هو الأكثر شيوعًا للمستخدمين. ومع ذلك ، تبين أن هذه الطريقة أكثر تعقيدًا من الأولين. الحقيقة هي أنه ، للراحة ، يجب تقديم البيانات المدرجة بتنسيق Excel الأصلي - جدول بيانات OpenXML. يتم تنفيذ ذلك بسهولة باستخدام نموذج كائن Excel ، أي من الوظيفة الإضافية. لذلك ، تبدو عملية تكوين الحافظة كما يلي:



  • يختار المستخدم منطقة بها أرقام في واس
  • يتم تمرير مجموعة من الأرقام المخصصة إلى خدمة الإعلام
  • تقوم خدمة الإعلام بتمريرها إلى الوظيفة الإضافية
  • ينشئ Addin OpenXML ويدرجه في الحافظة
  • يمكن للمستخدم لصق البيانات من الحافظة في أي مكان في أي جدول بيانات Excel.






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



ننشر البيانات



بعد أن يختار المستخدم البيانات الأولية لنموذجه ، يحتاج إلى "نشر" جميع الفترات (السنوات والفصول الدراسية والأرباع) التي تهمه. لهذه الأغراض ، أحد معالم UDF الخاص بنا هو تاريخ (فترة) هذا التاريخ (تذكر: "الدخل للربع الأول من عام 2020"). يحتوي Excel على صيغة أصلية "نشر" آلية تسمح لك بتعبئة الخلايا بنفس الصيغة ، مع مراعاة المراجع المحددة في المعلمات. أي ، بدلاً من تاريخ محدد ، يتم إدراج ارتباط إليه في الصيغة ، ثم "يقوم" المستخدم "بتوسيعه" إلى فترات أخرى ، بينما يتم تحميل "نفس" الأرقام من فترات أخرى تلقائيًا في الجدول. 



وما هو هذا الرقم؟



لدى المستخدم الآن نموذج به عدة مئات من الصفوف وعشرات من الأعمدة. وقد يكون لديه سؤال ، ما هو الرقم الموجود في الخلية L123؟ للحصول على إجابة ، يحتاج فقط إلى النقر فوق هذه الخلية وفي SPA الخاص بنا سيتم فتح التقرير نفسه ، في نفس الصفحة حيث يتم كتابة الرقم الذي تم النقر فوقه ، وسيتم تمييز الرقم الموجود في التقرير. مثل هذا:







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



كاستنتاج



هذا ، في رأيي ، تنفيذ غير قياسي للتفاعل بين Excel وتطبيق ويب ، والذي اتضح أنه سهل الاستخدام تمامًا. بفضل استخدام Excel ، فإن عتبة الدخول للمستخدمين من الجمهور المستهدف منخفضة للغاية. في الوقت نفسه ، نحصل أيضًا على كل قوة Excel للعمل مع البيانات الرقمية. تظل البيانات نفسها دائمًا مرتبطة بالمصدر ، وكذلك مرتبطة بالوقت. بالنسبة للعملاء المستهدفين ، ليست هناك حاجة لبناء أنظمة خارجية جديدة تمامًا في عملية العمل مع البيانات. تم تضمين حلنا باعتباره "أداة" إضافية داخل Excel ، وهو المعيار الفعلي لموفري البيانات المالية.



يمكن تطبيق نهج معماري مماثل لدمج تطبيقات الويب مع Microsoft Excel على المهام الأخرى التي تتطلب التفاعل وواجهات مستخدم معقدة عند العمل مع البيانات الرقمية والجداول.



All Articles