تصدير التقرير إلى Powerpoint بدون تثبيت Aspose.Slides.ReportingService على الخادم

تتكون عملية العرض من جزئين:

  1. عرض التقرير إلى RPL باستخدام خدمة ويب تقارير. راجع المزيد من المعلومات حول خدمة ويب التقارير هنا.
  2. عرض RPL إلى Powerpoint باستخدام Aspose.Slides لخدمة التقارير لعرض التقرير. التجميع موجود في {Aspose.Slides لخدمات التقارير home directory}\bin\RV2010

كيفية تنفيذ التصدير إلى PowerPoint:

  1. إنشاء Proxy خدمة الويب (راجع التفاصيل هنا) وإضافته إلى الحل الخاص بك.

  2. إضافة مرجع إلى Aspose.Slides.ReportingServices.dll لعرض التقرير 2010.

  3. استخدم هذه الفئة لدمج Proxy خدمة الويب و Aspose.Slides لخدمة التقارير


 class PowerpointRenderer

{

/// <summary>

/// يحصل أو يحدد عنوان URL الأساسي لخدمة الويب XML التي يطلبها العميل.

/// </summary>

/// <value>

/// عنوان URL الأساسي لخدمة الويب XML التي يطلبها العميل. القيمة الافتراضية هي System.String.Empty.

/// </value>

public string ReportingServiceUrl { get; set; }


/// <summary>

/// يحصل أو يحدد اسم المستخدم لخدمة التقارير.

/// </summary>

/// <value>

/// اسم المستخدم.

/// </value>

public string Username { get; set; }

/// <summary>

/// يحصل أو يحدد كلمة المرور لخدمة التقارير.

/// </summary>

/// <value>

/// كلمة المرور.

/// </value>

public string Password { get; set; }

/// <summary>

/// يعرض التقرير المحدد إلى ملف.

/// </summary>

/// <param name="outputFileName">اسم ملف الخرج.</param>

/// <param name="reportPath">مسار التقرير.</param>

/// <param name="format">تنسيق العرض الإخراجي.</param>

public void Render(string outputFileName, string reportPath, Aspose.Slides.ReportingServices.OutputPresentationFormat format)

{

using (FileStream pptSteam = new FileStream(outputFileName, FileMode.Create))

{

Aspose.Slides.ReportingServices.RplRenderer renderer = new Aspose.Slides.ReportingServices.RplRenderer();

//بدء عملية العرض

//هنا نحن نختار التصدير بتنسيق PPT وتوفير outputStream

renderer.StartRendering(format, false);

int page = 1;

//تكرر هذه الدورة عبر جميع صفحات التقرير

while (true)

{

using (MemoryStream rplStream = CreateRplStream(page, reportPath))

{

//إذا كان rplStream فارغًا، فنحن نكون قد وصلنا إلى نهاية التقرير

if (rplStream.Length == 0)

break;

//إضافة صفحة التقرير كشريحة إلى المستند

renderer.RenderPage(rplStream);

}

page++;

}

//استدعاء طريقة الانتهاء لتفريغ العرض التقديمي الذي تم إنشاؤه حديثًا إلى output stream

renderer.FinishRendering(pptSteam);

}

}

private MemoryStream CreateRplStream(int page, string reportPath)

{

ReportExecutionService _executionService = new ReportExecutionService();

_executionService.Url = ReportingServiceUrl + "/ReportExecution2005.asmx";

_executionService.Credentials = new System.Net.NetworkCredential(Username, Password, string.Empty);

string extension;

Warning[] warnings;

string[] streamIds;

string mimeType;

string encoding;

var executionInfo = _executionService.LoadReport(reportPath, null);

string deviceInfo = String.Format(

@"<DeviceInfo>

<StartPage>{0}</StartPage>

<EndPage>{0}</EndPage>

<SecondaryStreams>Embedded</SecondaryStreams>

</DeviceInfo>", page);

byte[] result = _executionService.Render("RPL", deviceInfo, out extension, out mimeType, out encoding, out warnings, out streamIds);

return new MemoryStream(result);

}

  1. الآن يمكنك تصدير التقرير من خلال هذا الكود:

 PowerpointRenderer powerpointRenderer = new PowerpointRenderer();

powerpointRenderer.ReportingServiceUrl = "http://<اسم الخادم>/Reportserver";

powerpointRenderer.Username = "اسم المستخدم";

powerpointRenderer.Password = "كلمة المرور";

powerpointRenderer.Render("test.ppt", "/AdventureWorks Sample Reports/Sales Order Detail SQL2008R2", Aspose.Slides.ReportingServices.OutputPresentationFormat.Ppt);