Reporting services SQL Server Reporting Services 2017-更改导出文件名

Reporting services SQL Server Reporting Services 2017-更改导出文件名,reporting-services,export-to-pdf,Reporting Services,Export To Pdf,我计划从2012年起升级到SQL Server 2017 Reporting Services 在我的公司已经使用了几年的2012版中,我们添加了一个扩展 这使我们能够在用户将报告导出为PDF、Excel等时修改文件名,。。。 因此,我们得到的不是文件名StudentReport\u Student\u Name.PDF,而是StudentReport\u Student\u Name.PDF 为了管理这一点,我们在每个报告的页脚中添加了一个隐藏字段,FileNameExtend=[[Stude

我计划从2012年起升级到SQL Server 2017 Reporting Services

在我的公司已经使用了几年的2012版中,我们添加了一个扩展 这使我们能够在用户将报告导出为PDF、Excel等时修改文件名,。。。 因此,我们得到的不是文件名StudentReport\u Student\u Name.PDF,而是StudentReport\u Student\u Name.PDF

为了管理这一点,我们在每个报告的页脚中添加了一个隐藏字段,FileNameExtend=[[Student Name]]为白色文本,因此 除非更改文本的颜色,否则不会看到它

然后将以下JavaScript代码添加到服务器上的ReportingServices.js中

function ModifyExportUrlBase() {
    var rv = null;
    var r = null;
    try {
        rv = this.$find("ctl31");
        r = rv._getInternalViewer();
    }
    catch (err) {
        setTimeout(ModifyExportUrlBase, 1000)
        return;
    }
    if (r != null && r.ExportUrlBase != null) {
        // Search for FileNameExtension in all div elements
        var fileNameExtend = function () {
            var divElements = document.getElementsByTagName("div");
            var result = '';
            for (var i = 0; i < divElements.length; i++) {
                if (divElements[i].innerText.indexOf("FileNameExtend=[[") > -1 && divElements[i].innerText.indexOf("]]") > -1) {
                    var istart = divElements[i].innerText.indexOf("[[");
                    var istop = divElements[i].innerText.indexOf("]]");
                    result = divElements[i].innerText.substring(istart + 2, istop);
                }
            }
            return String(result);
        }();

        // Change ExportUrlBase if fileNameExtend exist
        if (fileNameExtend != null && fileNameExtend.length > 0) {
            var url = r.ExportUrlBase;
            var i = url.indexOf("FileName=");
            var j = url.indexOf("&", i + 1);
            var fileName = url.substring(i, j) + '_' + encodeURI(fileNameExtend);
            r.ExportUrlBase = r.ExportUrlBase.substring(0, i) + fileName + r.ExportUrlBase.substring(j, r.ExportUrlBase.length);
        }
    }
    else {
        setTimeout(ModifyExportUrlBase, 1000);
    }
}
ModifyExportUrlBase();
函数ModifyExportUrlBase(){
var-rv=null;
var r=null;
试一试{
rv=此。$find(“ctl31”);
r=rv._getInternalViewer();
}
捕捉(错误){
setTimeout(ModifyExportUrlBase,1000)
返回;
}
如果(r!=null&&r.ExportUrlBase!=null){
//在所有div元素中搜索FileNameExtension
var fileNameExtend=函数(){
var divElements=document.getElementsByTagName(“div”);
var结果=“”;
对于(var i=0;i-1&&divElements[i].innerText.indexOf(“]]”)>-1){
var istart=divElements[i].innerText.indexOf(“[]”);
var istop=divElements[i].innerText.indexOf(“]]”);
结果=divElements[i].innerText.substring(istart+2,istop);
}
}
返回字符串(结果);
}();
//如果存在fileNameExtend,则更改ExportUrlBase
if(filenamextend!=null&&filenamextend.length>0){
var url=r.ExportUrlBase;
var i=url.indexOf(“FileName=”);
var j=url.indexOf(“&”,i+1);
var fileName=url.substring(i,j)+'.'+encodeURI(filenamextend);
r、 ExportUrlBase=r.ExportUrlBase.substring(0,i)+fileName+r.ExportUrlBase.substring(j,r.ExportUrlBase.length);
}
}
否则{
setTimeout(ModifyExportUrlBase,1000);
}
}
ModifyExportUrlBase();
2017年报告服务的实施方式似乎与2012年大不相同。 是否有人找到了实现此功能的方法