25. التنفيذ التلقائي مع بيانات Excel
عندما تكون البيانات متوفرة في Excel، يمكنك استخدام الوظيفتين UpdateChart
وPresentationFromTemplate
للتحكم برمجيًا باستخدام هذه البيانات.
باستخدام UpdateChart
، يمكنك استبدال ورقة بيانات عنصر معين ببيانات Excel الخاصة بك. باستخدام PresentationFromTemplate
، يمكنك استخدام بياناتك لإنشاء عرض تقديمي جديد يستند إلى قالب PowerPoint يحتوي على عناصر think-cell مرتبطة بنطاقات بيانات في Excel على النحو الموضح في 21. ارتباطات بيانات Excel.
واجهة كلتا الوظيفتين مدمجة في نموذج التنفيذ التلقائي لتطبيقات Office، بحيث يمكن الوصول إليها من أي لغة تستخدمها لبرمجة Office، مثل Visual Basic for Applications (VBA) أو C#. راجع بدء الاستخدام للحصول على إرشادات تفصيلية.
نقطة الدخول إلى think-cell هي كائن الوظيفة الإضافية think-cell. يمكن الوصول إليه عبر المجموعة Application.COMAddIns
. دائمًا ما تكون عمليات الاستدعاء في think-cell متأخرة الربط. راجع قاعدة معارف Microsoft للحصول على توضيح:
استخدام الربط المبكر والربط المتأخر في التنفيذ التلقائي
لذلك، يكون نوع كائن الوظيفة الإضافية think-cell هو Object
ببساطة، ولا توجد مكتبة نوع أو مرجع للإضافة. ما عليك سوى الحصول على الكائن، وستكون جاهزًا لإجراء استدعاءات. على سبيل المثال، في لغة البرمجة VBA في Excel:
Dim tcXlAddIn As Object
Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
في لغة C#، يمكنك تحقيق الربط المتأخر من خلال توضيح المرجع لكائن الوظيفة الإضافية think-cell بمثابة dynamic
؛ هذا هو أيضًا النوع الذي يستنتجه برنامج التحويل البرمجي عند توضيح المرجع بمثابة var
، حتى تستطيع بسهولة كتابة:
var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
هنا xlapp
هو مرجع لكائن Excel.Application
يتم تحميل think-cell بداخله.
- 25.1
- UpdateChart
- 25.2
- PresentationFromTemplate
25.1 UpdateChart
25.1.1 التوقيع
VBA
tcXlAddIn.UpdateChart( _
target As Object, _
strName As String, _
rgData As Excel.Range, _
bTransposed As Boolean _
)
C#
void tcXlAddIn.UpdateChart(
object target,
string strName,
Excel.Range rgData,
bool bTransposed
);
25.1.2 الوصف
تقوم هذه الوظيفة بتحديث كل العناصر في target
التي تحمل الاسم strName
بالبيانات الواردة في rgData
. لكي يتم تفسير البيانات بصورة صحيحة للمخططات، يجب أن يكون النطاق rgData
مطابقًا لتخطيط ورقة البيانات الافتراضي، أو الإصدار المبدّل، انظر أيضًا إنشاء مخطط من Excel وإدخال تخطيط البيانات. يتم تحديد استخدام الإصدار الافتراضي أو المبدّل بواسطة تعيين bTransposed
على false
أو true
على التوالي. للعناصر الأخرى بخلاف المخططات، مثل الجداول، يتم تجاهل قيمة bTransposed
.
target
يجب أن يكون Presentation
، أو SlideRange
، أو Slide
مفرد، أو Master
، أو CustomLayout
.
تتم مطابقة الاسم strName
دون حساسية لحالة الأحرف. يجب أن يكون قد تم تعيينه مسبقًا في PowerPoint باستخدام عنصر تحكم الخاصية اسم UpdateChart على النحو الموضح في 24. مقدمة عن التنفيذ التلقائي.
لضمان استهداف العناصر الصحيحة، تأكد من أنها العناصر الوحيدة التي تم تعيين اسم UpdateChart لها على strName
في الكائن المنقول بمثابة pres
.
إذا كان العنصر المستهدف مرتبطًا بأي نطاق بيانات Excel عند استدعاء هذه الوظيفة، يتم قطع الارتباط. بعد ذلك، لن يتم ربط العنصر بأي نطاق Excel.
25.1.3 أمثلة
لاستخدام هذه النماذج، قم بإعداد عرض تقديمي على النحو الموضح في 24. مقدمة عن التنفيذ التلقائي، واحفظه بمثابة C:\Samples\UpdateChart\template.pptx
.
VBA
لاستخدام هذا النموذج، قم بإضافته إلى وحدة نمطية في مصنف Excel.
وهو يتطلب مرجع لمكتبة كائنات Microsoft PowerPoint 16.0 (انظر Visual Basic for Applications لمعرفة التفاصيل).
سيؤدي تشغيل UpdateChart_Sample
في مصنف إلى تحديث المخطط في قالب العرض التقديمي بالبيانات الموجودة في النطاق A1:D5
بأول ورقة منه.
Option Explicit
Sub UpdateChart_Sample()
' Get the range containing the new data
Dim rng As Excel.Range
Set rng = ActiveWorkbook.Sheets(1).Range("A1:D5")
' Get the think-cell add-in object
Dim tcXlAddIn As Object
Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
' Get a PowerPoint instance. Hold on to this
' object as long as you want to access the
' generated presentations. There can only be a
' single PowerPoint instance. If there is no
' PowerPoint running, one will be started.
' Otherwise the existing one is used.
Dim ppapp As Object
Set ppapp = New PowerPoint.Application
Dim pres As PowerPoint.Presentation
' PowerPoint window visible
' Set pres = ppapp.Presentations.Open( _
' Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
' Untitled:=msoTrue)
' PowerPoint window invisible
Set pres = ppapp.Presentations.Open( _
Filename:="C:\\Samples\\UpdateChart\\template.pptx", _
Untitled:=msoTrue, _
WithWindow:=msoFalse)
Call tcXlAddIn.UpdateChart(pres, "Chart1", rng, False)
' Save the updated presentation
pres.SaveAs ("C:\\Samples\\UpdateChart\\template_updated.pptx")
pres.Close
ppapp.Quit
End Sub
C#
لاستخدام هذا النموذج، استبدل التعليمة البرمجية في Program.cs
ضمن قالب المشروع تطبيق وحدة التحكم بلغة C# به.
وهو يتطلب مراجع لمكتبة كائنات Microsoft PowerPoint 16.0، ومكتبة كائنات Microsoft Excel 16.0، ومكتبة كائنات Microsoft Office 16.0 (انظر C# لمعرفة التفاصيل).
سيؤدي تشغيل التطبيق الناتج إلى تحديث المخطط في قالب العرض التقديمي لكي يحتوي على سلسلة فردية باسم "السلسلة 1" تحمل القيم 1، و2، و3 وحفظ النتيجة بمثابة template_updated.pptx
.
using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
namespace ConsoleApplication_UpdateChart
{
class Program
{
static void Main()
{
Excel.Application xlapp = new Excel.Application { Visible = true };
Excel.Workbook workbook = xlapp.Workbooks.Add(1);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
worksheet.Cells[3, 1] = "Series 1";
worksheet.Cells[3, 2] = 1;
worksheet.Cells[3, 3] = 2;
worksheet.Cells[3, 4] = 3;
PowerPoint.Application ppapp = new PowerPoint.Application();
PowerPoint.Presentation presentation = ppapp.Presentations.Open(
"C:\\Samples\\UpdateChart\\template.pptx",
Office.MsoTriState.msoFalse,
Office.MsoTriState.msoTrue
);
var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
tcXlAddIn.UpdateChart(
presentation,
"Chart1",
worksheet.get_Range("A1", "D3"),
false
);
presentation.SaveAs("C:\\Samples\\UpdateChart\\template_updated.pptx");
presentation.Close();
ppapp.Quit();
workbook.Close(false);
xlapp.Quit();
}
}
}
25.2 PresentationFromTemplate
25.2.1 التوقيع
VBA
tcXlAddIn.PresentationFromTemplate( _
wb As Excel.Workbook, _
strTemplate As String, _
ppapp As PowerPoint.Application _
) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
Excel.Workbook wb,
string strTemplate,
PowerPoint.Application ppapp
);
25.2.2 الوصف
تستخدم هذه الوظيفة ارتباطات البيانات بين مصنف Excel wb
والقالب الذي يحمل اسم الملف strTemplate
لإنشاء مثيل لذلك القالب من خلال تحديث العناصر المرتبطة باستخدام البيانات المستمدة من النطاقات المرتبطة بها. تكون النتيجة عرضًا تقديميًا جديدًا داخل مثيل PowerPoint ppapp
.
strTemplate
قد يكون مسارًا كاملاً أو مسارًا نسبيًا يتم التعامل معه بعد ذلك باعتباره نسبيًا إلى موقع ملف مصنف Excel wb
.
يتم تحديث كل العناصر الموجودة في strTemplate
والمرتبطة بمصنف Excel wb
(بصرف النظر عما إذا كان قد تم تعيينها على التحديث التلقائي أم لا). في العرض التقديمي الناتج، يتم قطع ارتباطات البيانات الخاصة بها لمنع إجراء تغييرات إضافية بهذه العناصر.
يتم ترك العناصر الموجودة في strTemplate
والمرتبطة بمصنفات Excel أخرى بخلاف wb
دون تغيير وتظل مرتبطة، لذلك يمكن تحديث الارتباطات من مصنفات Excel متعددة من خلال حفظ نتيجة هذه الوظيفة كقالب جديد ثم استدعاء هذه الوظيفة مرة أخرى مع المصنف التالي.
إذا كنت تريد التحكم في ألوان مقاطع المخطط أو تنسيق خلايا الجدول باستخدام ارتباط Excel، يمكنك تعيين نظام الألوان على الخيار استخدام تعبئة ورقة بيانات إضافية (انظر نظام الألوان) أو استخدام ورقة بيانات... (انظر تنسيق جدول) على التوالي. بالمثل، للتحكم في تنسيق الأرقام باستخدام ارتباط Excel، قم بتعيينه على استخدام تنسيق Excel (راجع تنسيق الأرقام).
تأكد من تعيين خيارات التنسيق ذات الصلة وتنسيق الأرقام للخلايا المعنية في Excel قبل استدعاء PresentationFromTemplate
.
25.2.3 أمثلة
لاستخدام هذه النماذج، قم أولاً بإنشاء عرض تقديمي يحتوي على مخطط مكدس مرتبط بالنطاق G1:K4
بأول ورقة في مصنف Excel على النحو الموضح في إنشاء مخطط من Excel. احفظ العرض التقديمي الناتج بمثابة C:\Samples\PresentationFromTemplate\template.pptx
والمصنف بمثابة data.xlsx
في نفس الدليل.
VBA
لاستخدام هذا النموذج، قم بإضافته إلى وحدة نمطية في مصنف Excel data.xlsx
الذي تم إعداده على النحو الموضح أعلاه.
وهو يتطلب مرجع لمكتبة كائنات Microsoft PowerPoint 16.0 (انظر Visual Basic for Applications لمعرفة التفاصيل).
سيؤدي تشغيل PresentationFromTemplate_Sample
إلى تغيير القيمة في الخلية Sheet1!H3
المرتبطة بالقيمة الأولى في السلسلة الأولى من المخطط الموجود في template.pptx
من i=1
إلى 10
، وإنشاء عرض تقديمي جديد مع تحديث المخطط الموجود في القالب لكي يحتوي على تلك القيمة، والتي لم تعد مرتبطة بالمصنف، وحفظه بمثابة output_i.pptx
في نفس الدليل الخاص بالقالب.
Option Explicit
Sub PresentationFromTemplate_Sample()
' Get the range to modify. It is more efficient
' to do this once rather than within the loop.
Dim rng As Excel.Range
Set rng = ActiveWorkbook.Sheets(1).Cells(3, 8)
' Get the think-cell add-in object
Dim tcXlAddIn As Object
Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
' Get a PowerPoint instance. Hold on to this
' object as long as you want to access the
' generated presentations. There can only be a
' single PowerPoint instance. If there is no
' PowerPoint running, one will be started.
' Otherwise the existing one is used.
Dim ppapp As Object
Set ppapp = New PowerPoint.Application
Dim i As Integer
For i = 1 To 10
' Modify the range value.
' Note: Avoid selecting the cell prior to
' changing it. It is very slow and has
' undesirable side-effects.
' BAD:
' rng.Select
' ActiveWindow.Selection.Value = 0
' GOOD:
rng.Value = i
' Generate a new presentation based on the
' linked template.
Dim pres As PowerPoint.Presentation
Set pres = tcXlAddIn.PresentationFromTemplate( _
Excel.ActiveWorkbook, "template.pptx", ppapp _
)
' If you want to modify the new presentation
' before saving it this is the place to do it.
' Save the new presentation
pres.SaveAs "C:\Samples\PresentationFromTemplate\output_" & i & ".pptx"
' Explicitly close the presentation when we
' are done with it to free its memory.
' Letting the object go out of scope is not
' sufficient.
pres.Close
Next
End Sub
C#
لاستخدام هذا النموذج، استبدل التعليمة البرمجية في Program.cs
ضمن قالب المشروع تطبيق وحدة التحكم بلغة C# به.
وهو يتطلب مراجع لمكتبة كائنات Microsoft PowerPoint 16.0، ومكتبة كائنات Microsoft Excel 16.0، ومكتبة كائنات Microsoft Office 16.0 (انظر C# لمعرفة التفاصيل).
سيؤدي تشغيل التطبيق الناتج إلى فتح تطبيق Excel أمامك، وتحميل المصنف data.xlsx
، وتغيير القيمة في الخلية H3
المرتبطة بالقيمة الأولى في السلسلة الأولى من المخطط الموجود في template.pptx
من i=1
إلى 10
، وإنشاء عرض تقديمي جديد مع تحديث المخطط الموجود في القالب لكي يحتوي على تلك القيمة، والتي لم تعد مرتبطة بالمصنف، وحفظه بمثابة output_i.pptx
في نفس الدليل الخاص بالقالب.
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication_PresentationFromTemplate
{
class Program
{
static void Main()
{
var xlapp = new Excel.Application { Visible = true };
var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
var workbook = xlapp.Workbooks.Open("C:\\Samples\\PresentationFromTemplate\\data.xlsx");
var ppapp = new PowerPoint.Application();
for (var i = 1; i <= 10; ++i)
{
workbook.Sheets[1].Cells[3, 8] = i;
PowerPoint.Presentation presentation = tcXlAddIn.PresentationFromTemplate(
workbook,
"C:\\Samples\\PresentationFromTemplate\\template.pptx",
ppapp
);
presentation.SaveAs("C:\\Samples\\PresentationFromTemplate\\output" + i + ".pptx");
presentation.Close();
}
ppapp.Quit();
workbook.Close(false);
xlapp.Quit();
}
}
}