在winform的ReportViewer的LocalReport中导出为CSV

本文关键字:CSV LocalReport winform ReportViewer | 更新日期: 2023-09-27 18:10:34

我想在LocalReport中将数据从ReportViewer导出为CSV格式。我在MSDN论坛上读了这篇文章,上面说本地报告不支持CSV呈现。但这可以在服务器报告中完成,但我不能使用服务器报告。

是否有办法在LocalReport中添加CSV导出扩展到ReportViewer ?

在winform的ReportViewer的LocalReport中导出为CSV

选项1 -自定义导出到Excel工具栏按钮

处理ReportExport事件的报告查看器,如果选择的扩展是excel,做你的导出到csv代替。

private void reportViewer1_ReportExport(object sender, 
    Microsoft.Reporting.WinForms.ReportExportEventArgs e)
{
    if (e.Extension.Name == "EXCELOPENXML")
    {
        //Export your data to csv here    
        e.Cancel = true;
    }
}

选项2 -添加自定义按钮到ReportViewer工具栏

将您的自定义按钮添加到报告查看器的工具栏,并指定一个处理程序来单击它的事件,并在这里导出为csv:

private void ReportForm_Load(object sender, EventArgs e)
{
    //Load your data from wherever your data is
    //For example using Entity Framework:
    var db = new TestDBEntities(); 
    var data = db.Categories.ToList();
    //Set data to report
    this.CategoryBindingSource.DataSource = data;
    this.reportViewer1.RefreshReport();
    //Add your button to Toolbar of ReportViewr
    ToolStrip toolStrip = (ToolStrip)reportViewer1.Controls.Find("toolStrip1", true)[0];
    toolStrip.Items.Add(new ToolStripButton("Export To CSV", 
    null /*image*/, ExportToCSV_Click));
}
void ExportToCSV_Click(object sender, EventArgs e)
{
    //Export your data to csv here    
}

注意:

无论您想要导出数据为csv,您都可以使用您传递给报告的数据源的数据