TOP

نقوم بإنشاء وظيفة Python لـ LibreOffice Calcc

وصف

LibreOffice Calc يسمح للمستخدمين بإنشاء وظائفهم الخاصة باستخدام لغة البرمجة StarBasic المضمنة. هذه اللغة تشبه إلى حد كبير VBA ومع ذلك، فإن وظائفه محدودة لأنه نادرًا ما يتم استخدامه.

توفر لغات البرمجة الحديثة، مثل Python، إمكانيات أكثر بكثير وتحتوي على نطاق أوسع من المكتبات الإضافية لجميع المناسبات.

لذلك، دعونا نتعلم كيف يمكنك إنشاء وظيفتك الخاصة باستخدام لغة برمجة شائعة اليوم مثل Python.


تتيح لك حزمة البرامج المكتبية LibreOffice إنشاء وظائفك الخاصة بلغات برمجة الطرف الثالث مثل Python وJavaScript وC++ وJava.

StarBASIC رمز الدالة Greeting()

أولاً، دعنا نتذكر كيف يمكنك كتابة برنامجك الخاص باستخدام أدوات LibreOffice Calc القياسية لكتابة وحدات الماكرو والوظائف.

أدناه هو رمز الوظيفة Greeting ، والتي تقوم بإرجاع عبارة "Hello " + معلمة الإدخال في الخلية المحددة باستخدام لغة البرمجة المضمنة StarBasic.

لإضافة وظيفتك الخاصة، افتح القائمة Tools - Macros - Edit Macros... وحدد Module1 وانسخ النص التالي إلى الوحدة:

Function Greeting(sName As String) As String
    Greeting = "Hello " & sName & "!"
End Function

بعد ذلك، قم بإغلاق Macro Editor، والعودة إلى LibreOffice Calc وأدخل اسم هذه الوظيفة في أي خلية وحدد معلمة الإدخال.

مجلد Python

قبل كتابة دالة في Python، نحتاج أولاً إلى إنشاء ملف *.py (myPyScripts.py) في المجلد التالي:

%APPDATA%\LibreOffice\4\user\scripts\python

إذا المجلدات مخطوطات و بايثون مفقودة، تحتاج إلى إنشائها يدويًا.

Python كود الدالة Greeting()

يوجد أدناه البرنامج النصي Python للوظيفة Greeting ، الذي ينص على العبارة "Python say 'Hello' to " + معلمة الإدخال في الخلية المحددة في البرنامج LibreOffice Calc.

لإضافة هذا البرنامج النصي، افتح الملف myPyScripts.py عن طريق Notepad++ (أو Windows Notepad) وانسخ النص التالي هناك:

def Greeting(sName):
    return "Python say 'Hello' to " + sName + "!"

ثم أغلقه Notepad++ والعودة إلى LibreOffice Cac.

لا يمكننا تشغيل هذه الوظيفة على الفور لأن واجهة LO Calc لا تحتوي على اتصال مباشر بوظائف Python.

لحل هذه المشكلة، نحتاج إلى إنشاء دالة وسيطة على StarBasic:

Function Greeting(sName As String) As String
    pyFile = "myPyScripts.py"
	pyFunc = "Greeting"
	pyParams = Array(sName)
	
	ScriptProvider = CreateUNOService("com.sun.star.script.provider.MasterScriptProviderFactory").createScriptProvider("")
	pyScript = ScriptProvider.getScript("vnd.sun.star.script:" & pyFile & "$" & pyFunc & "?language=Python&location=user")
    Greeting = pyScript.invoke(pyParams, Array(), Array())
End Function

أضف هذه الوظيفة الوسيطة إلى محرر الماكرو StarBasic (menu Tools - Macros - Edit Macros...).

الآن قم باستدعاء الدالة StarBasic Greeting() ، والذي بدوره يستدعي إصدار Python من الوظيفة Greeting() . فقط ادخل Greeting() في أي خلية وحدد أي قيمة كمعلمة.

استخدام الامتداد

يمكنك أيضًا استخدام مجموعة جاهزة وظائف و جدوى مكتوب على Python عن طريق تثبيت الامتداد YLC Utilities .

بعد ذلك، ستكون هذه الوظيفة متاحة في كافة الملفات التي سيتم فتحها في LibreOffice Calc.