我们一直在努力为SSRS中的堆叠数据栏提供灵活的设计,以便在100%填充的Tablix列单元格中可视化观看视频材料的百分比。
目标是清楚地显示用户查看过的视频片段的各个部分。例如 - 我们主持1小时长的电视节目,但用户并不总是从头到尾观看整集,我们想知道他们实际观看的视频的哪些部分。用户可以跳转 - 在开始时稍微观察,然后跳到中间再观看一些,然后到最后。我们使用的流媒体视频系统提供详细的报告,其中开始观看和结束。我们的工作是将所有信息放入一个简洁的固定长度数据条中,以便快速显示特定用户观看过的特定视频片段的数量。
这是报告的理想外观。
在第一行中,您会看到用户查看了大约20%的视频,然后跳到49%并观看到54%然后停止。这导致了观看视频总长度的25%。
这可以使用堆叠数据栏来实现吗?任何建议都非常赞赏。
答案 0 :(得分:0)
我能够通过创建自定义SSRS程序集来解决这个问题,该程序集生成位图图像并将其作为字节数组返回,然后在图像表达式字段中使用。
如果有人有兴趣,用于根据观看的视频部分生成图片的部分C#代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
namespace SSRSExtensions
{
public class ReportFunctions
{
public static Byte[] GetViewingRangeImage(String ranges, String imageFormatString, Single width, Single height, String backgroundColor, String foregroundColor, String separatorColor)
{
Byte[] retValue = null;
ImageFormat imageFormat = GetImageFormat(imageFormatString);
if (imageFormat != null)
{
ImageCodecInfo imageCodec = GetImageEncoderInfo(imageFormat);
Bitmap bitmap = GetViewingRangeImageBitmap(ranges, width, height, backgroundColor, foregroundColor, separatorColor);
using (EncoderParameters encoderParameters = new EncoderParameters(1))
{
using (EncoderParameter encoderParameter = new EncoderParameter(Encoder.Quality, 100L))
{
encoderParameters.Param[0] = encoderParameter;
using (MemoryStream memoryStream = new MemoryStream())
{
bitmap.Save(memoryStream, imageFormat);
retValue = memoryStream.ToArray();
}
}
}
}
return retValue;
}
}
}
图像表达式是: = SSRSExtensions.ReportFunctions.GetViewingRangeImage(Fields!ViewingRange.Value," PNG",200,25," White",& #34;#808080","#bfbfbf")
实际范围以逗号分隔的字符串指定,如下所示: 0.000000-10.000000,20.0000-00-.00.000000,90.000000-100.000000。 ,其中用户首先观看10%,跳至20%并观看至50%,然后跳至90%并且看完直到结束。
这篇较旧的博客文章(https://blog.oraylis.de/2012/04/ssrs-custom-drawing-code/)讨论了如何绘制动态图片并在报告中使用它们。它使用内联VB。如果要使用C#,则必须创建外部程序集,将其复制到C:\ Program Files \ Microsoft SQL Server [SSRS INSTALL FOLDER] \ Reporting Services \ ReportServer \ bin文件夹并在报表中引用它
如果有人需要有关如何将此全部插入SSRS报告的其他详细信息,请告诉我,我将很乐意为您提供帮助。