0

我们最近将 CRM 系统从 3.0 升级到了 4.0。从此我们

我们的报告有问题。

每当我们将报告导出为 excel 格式时,在

CRM 4.0 的名称为一些“GUID”.xls。不只是文件名,工作表

contianing 输出也有 GUID 作为名称。这适用于其他

格式也(输出文件名包含 GUID)。

我可以将重命名文件另存为其他内容。但是我们有订阅

在我们的大多数报告中,将报告的 excel 输出发送到一组

人的。

如果我可以将报告上传到,而不是从 CRM 4.0 上传 RDL

其他一些SSRS文件夹并提供链接,它将起作用。但我们不想做

它。

谁能帮我这个?

谢谢

4

1 回答 1

0

不确定,但可以尝试为 Excel 创建自定义渲染扩展。更改文章中的 Render 方法,因为它是由这条评论提出的,唯一的区别是 - 使用 excel 格式:

public bool Render(Report report, 
  NameValueCollection reportServerParameters, 
  NameValueCollection deviceInfo, NameValueCollection clientCapabilities, 
  EvaluateHeaderFooterExpressions evaluateHeaderFooterExpressions, 
  CreateAndRegisterStream createAndRegisterStream)
{
    string strUri = string.Empty;
    strUri += 
      "http://localhost/Reports/Reserved.ReportViewerWebControl.axd";
    strUri += "?ReportSession=" + reportServerParameters["SessionID"];
    // Here you can check the name of report provided to viewer for export. 
    // If it's incorrect, you may extend method to set the right name.
    strUri += "&FileName=" + report.Name;  
    strUri += "&ControlId=" + Guid.Empty;
    strUri += "&Culture=" + 
      CultureInfo.CurrentCulture.LCID.ToString(
        CultureInfo.InvariantCulture);
    strUri += "&UICulture=" + 
      CultureInfo.CurrentUICulture.LCID.ToString(
        CultureInfo.InvariantCulture);
    strUri += "&ReportStack=1";
    strUri += "&OpType=Export";
    strUri += "&ContentDisposition=OnlyHtmlInline";
    strUri += "&Format=MHTML";
    Stream outputStream = null;
    StreamWriter streamWriter = null;
    try
    {
        //Output to Excel
        outputStream = createAndRegisterStream(report.Name, "xls",
          System.Text.Encoding.UTF8,
        "application/vnd.ms-excel", true, StreamOper.CreateAndRegister);
        streamWriter = new StreamWriter(outputStream);
        //Input
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
        //Credentials
        request.Credentials = System.Net.CredentialCache.DefaultCredentials;
        //Output
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        //Input
        Stream inputStream = response.GetResponseStream();
        StreamReader streamReader = 
          new StreamReader(response.GetResponseStream());
        //Read/Write
        streamWriter.Write(streamReader.ReadToEnd());
    }
    finally
    {
        if (streamWriter != null)
        {
            streamWriter.Flush();
        }
    }
    return false;
}

您可以将此渲染器添加为新的自定义扩展(然后您必须更改订阅格式)或替换现有的 excel 扩展 - 请参阅在配置文件中指定渲染扩展参数

于 2009-03-01T14:16:20.733 回答