Создание настраиваемого экспорта в Excel для ReportViewer (rdlc)

Меня интересует создание настраиваемой опции экспорта в Excel для моего отчета в ReportViewer. В основном это связано с тем, что я хочу отключить PDF-файл, и я сделал это с помощью:

 ReportViewer1.ShowExportControls = false;

Поскольку в ReportViewer нет возможности отключить какие-либо определенные функции экспорта (например, PDF, но не Excel). Вот мой (слегка) измененный код ниже. В идеале я хотел бы что-то похожее на предыдущие параметры экспорта, где я могу сохранить файл в любом месте, которое захочу.

РЕДАКТИРОВАТЬ: Код работает, но как мне изменить Filestream, чтобы вместо автоматического сохранения файла я мог предложить пользователю сохранить его в любом месте, которое пожелает?

protected void btnExportExcel_Click(object sender, EventArgs e)
{
    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;

    byte[] bytes = ReportViewer1.LocalReport.Render(
       "Excel", null, out mimeType, out encoding,
        out extension,
       out streamids, out warnings);

    FileStream fs = new FileStream(@"c:\output.xls",
       FileMode.Create);
    fs.Write(bytes, 0, bytes.Length);
    fs.Close();

}
18
задан skaffman 16 August 2010 в 14:38
поделиться

1 ответ

Я собрал это на основе документации Microsoft по ReportViewer и некоторых поисковых запросов Google на случай, если кто-то столкнется с проблемой, похожей на мою:

protected void ExportExcel_Click(object sender, EventArgs e)
{
    Warning[] warnings;
    string[] streamids;
    string mimeType;
    string encoding;
    string extension;
    string filename;

    byte[] bytes = ReportViewer1.LocalReport.Render(
       "Excel", null, out mimeType, out encoding,
        out extension,
       out streamids, out warnings);

    filename = string.Format("{0}.{1}", "ExportToExcel", "xls");
    Response.ClearHeaders();
    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
    Response.ContentType = mimeType;
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
}
19
ответ дан 30 November 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: