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

时间:2012-04-25 15:14:09

标签: devexpress export-to-excel excel-interop xtragrid

我有几个XtraGrid控件,每个控件包含不同的信息,我得到一些信息,可以按照以下方向将XtraGrid导出到Excel文件http://www.devexpress.com/Support/Center/p/Q362120.aspx

现在有没有办法将每个XtraGrid控件导出到一个Excel文件,以便将每个XtraGrid信息导出到另一个Excel工作表。

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

我尝试使用此方向XtraGrid - Export To Excel中描述的方法,但我想知道是否有其他方法没有使用interop excel库,因为我在使用此库时遇到了一些问题(我的意思是在使用时你创建一个Excel进程的库,但是在你创建它之后就无法杀死它,即使你已经使用了应该这样做的方法。)

欢迎任何帮助。

3 个答案:

答案 0 :(得分:4)

我只是想提供一个更完整的答案,因为我需要一段时间才能使用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);
            }
        }
    }
}    

希望能节省一些时间。

答案 1 :(得分:2)

为此,您需要为每个gridControl添加printableComponentLink,然后创建一个可以添加每个printableComponent链接的compositeLink。

此链接可能证明DevExpress KB Article可能有用,因为它有一个例子。

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

答案 2 :(得分:-1)

在上面的代码中,compositeLink.ExportToXlsx对我来说失败了 - 没有这样的方法。当然我使用的是旧的V10.2.5。我建议使用ShowPreviewDialog方法从DEVXPRESS网站获取此链接,该方法允许以多种不同格式导出。该链接还显示了如何对输出进行一些自定义。  https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraPrintingLinksCompositeLinktopic