Devexpress 将多个XtraGrid控件导出到单个Excel文件

Devexpress 将多个XtraGrid控件导出到单个Excel文件,devexpress,export-to-excel,excel-interop,xtragrid,Devexpress,Export To Excel,Excel Interop,Xtragrid,我有几个XtraGrid控件,每个控件都包含不同的信息,我得到了一些关于按照以下方向将XtraGrid导出到Excel文件的方法的信息 现在有没有办法将每个XtraGrid控件导出到单个Excel文件中,以便将每个XtraGrid信息导出到不同的Excel工作表中 我尝试将导出路径方向设置为同一个Excel文件,但当第一个导出过程完成时,第二个导出过程将覆盖Excel文件,依此类推 我试着使用这个方向描述的方法,但我想知道是否有其他方法不使用interop excel库,因为我在使用这个库时遇到

我有几个XtraGrid控件,每个控件都包含不同的信息,我得到了一些关于按照以下方向将XtraGrid导出到Excel文件的方法的信息

现在有没有办法将每个XtraGrid控件导出到单个Excel文件中,以便将每个XtraGrid信息导出到不同的Excel工作表中

我尝试将导出路径方向设置为同一个Excel文件,但当第一个导出过程完成时,第二个导出过程将覆盖Excel文件,依此类推

我试着使用这个方向描述的方法,但我想知道是否有其他方法不使用interop excel库,因为我在使用这个库时遇到了一些问题(我的意思是,在使用这个库时,您创建了一个Excel进程,但在创建它之后,您无法终止它,即使您使用了应该这样做的方法)


欢迎提供任何帮助。

为此,您需要向每个gridControl添加一个可打印组件链接,然后创建一个可将每个可打印组件链接添加到的compositeLink

此链接可能证明DevExpress可能很有用,因为它有一个这样的示例


然后您将使用
compositeLink.ExportToXlsx
方法。如果使用
XlsxExportOptions.ExportMode
属性创建
XlsxExportOptions
,该属性等于
SingleFilePageByPage
,并将其传递给
compositeLink.ExportToXlsx
方法,则每个页面都将导出到单独的页面。

要执行的操作您将希望向每个gridControl添加一个printableComponentLink,然后创建一个compositeLink,您可以向其中添加每个printableComponent链接

此链接可能证明DevExpress可能很有用,因为它有一个这样的示例


然后您将使用
compositeLink.ExportToXlsx
方法。如果使用
XlsxExportOptions.ExportMode
属性创建
XlsxExportOptions
,该属性等于
SingleFilePageByPage
,并将其传递给
compositeLink.ExportToXlsx
方法,则每个页面都将导出到单独的页面。

我不想提供一个更完整的答案,因为我花了一段时间才用D.的答案得出一个解决方案

是的,看起来我想打印一些东西,但我保证我只是导出到Excel

using DevExpress.XtraPrinting;
using DevExpress.XtraPrintingLinks;
using DevExpress.XtraGrid;

class whatever
{
    GridControl grid1;
    GridControl grid2;
    //.....

    public void exportToExcel()
    {
        using (var saveDialog = new SaveFileDialog())
        {
            saveDialog.Filter = "Excel (.xlsx)|*.xlsx";
            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                var printingSystem = new PrintingSystemBase();
                var compositeLink = new CompositeLinkBase();
                compositeLink.PrintingSystemBase = printingSystem;

                var link1 = new PrintableComponentLinkBase();
                link1.Component = grid1;
                var link2 = new PrintableComponentLinkBase();
                link2.Component = grid2;

                compositeLink.Links.Add(link1);
                compositeLink.Links.Add(link2);

                var options = new XlsxExportOptions();
                options.ExportMode = XlsxExportMode.SingleFilePageByPage;

                compositeLink.CreatePageForEachLink();
                compositeLink.ExportToXlsx(saveDialog.FileName, options);
            }
        }
    }
}    

希望这能节省一些时间。

我只是想提供一个更完整的答案,因为我花了一段时间才用D.的答案找到一个解决方案

是的,看起来我想打印一些东西,但我保证我只是导出到Excel

using DevExpress.XtraPrinting;
using DevExpress.XtraPrintingLinks;
using DevExpress.XtraGrid;

class whatever
{
    GridControl grid1;
    GridControl grid2;
    //.....

    public void exportToExcel()
    {
        using (var saveDialog = new SaveFileDialog())
        {
            saveDialog.Filter = "Excel (.xlsx)|*.xlsx";
            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                var printingSystem = new PrintingSystemBase();
                var compositeLink = new CompositeLinkBase();
                compositeLink.PrintingSystemBase = printingSystem;

                var link1 = new PrintableComponentLinkBase();
                link1.Component = grid1;
                var link2 = new PrintableComponentLinkBase();
                link2.Component = grid2;

                compositeLink.Links.Add(link1);
                compositeLink.Links.Add(link2);

                var options = new XlsxExportOptions();
                options.ExportMode = XlsxExportMode.SingleFilePageByPage;

                compositeLink.CreatePageForEachLink();
                compositeLink.ExportToXlsx(saveDialog.FileName, options);
            }
        }
    }
}    

希望它能节省一些时间。

在上面的代码中,
compositeLink.ExportToXlsx
对我来说失败了——没有这样的方法。当然,我使用的是旧版本的V10.2.5。我建议从DEVXPRESS网站上找到这个链接,它使用了允许以多种不同格式导出的
ShowPreviewDialog
方法。这个链接也可以ws如何对输出进行一些定制。

在上面的代码中,
compositeLink.ExportToXlsx
对我来说失败了——没有这样的方法。当然,我使用的是旧版本的V10.2.5。我建议从DEVXPRESS网站上找到这个链接,它使用了允许以多种不同格式导出的
ShowPreviewDialog
方法。这个链接还展示了如何定制o输出。