Вывод отчета об экспорте имени файла в CRM 4.0 - PullRequest
0 голосов
/ 28 февраля 2009

Мы недавно обновили нашу систему CRM с 3.0 до 4.0. С тех пор мы

возникли проблемы с нашими отчетами.

Когда мы экспортируем отчет в формат Excel, файл, созданный в

CRM 4.0 имеет имя как «GUID» .xls. Не просто имя файла, а лист

с выводом также имеет GUID в качестве имени. Это относится и к другим

также форматирует (имя выходного файла содержит GUID).

Я могу сохранить переименованный файл как-то еще. Но у нас есть подписки

по большинству наших отчетов, который отправляет выходные данные Excel в набор

чел.

Вместо загрузки RDL из CRM 4.0, если я могу загрузить отчет в

какую-нибудь другую папку SSRS и дай ссылку, все заработает. Но мы не хотим делать

это.

Может кто-нибудь помочь мне с этим?

Спасибо

1 Ответ

0 голосов
/ 01 марта 2009

Не уверен, но можно попробовать создать настраиваемое расширение рендеринга для 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 - см. Указание параметров расширения рендеринга в файлах конфигурации

...