0

最近、CRM システムを 3.0 から 4.0 にアップグレードしました。それ以来、私たちは

私たちのレポートに問題があります。

レポートを Excel 形式にエクスポートするたびに、で作成されたファイル

CRM 4.0 には、「GUID」.xls という名前が付いています。ファイルの名前だけでなく、シート

出力の内容も名前として GUID を持っています。これは他にも当てはまる

形式も含まれます (出力ファイル名には GUID が含まれます)。

ファイルの名前を変更して別のものとして保存できます。しかし、サブスクリプションがあります

レポートのExcel出力をセットに送信するほとんどのレポート

pplの。

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 に答える