1

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

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

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

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

欢迎任何帮助。

4

3 回答 3

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);
            }
        }
    }
}    

希望它可以节省一些时间。

于 2013-06-20T20:04:03.227 回答
2

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

这个链接可以证明 DevExpress知识库文章可能很有用,因为它有一个例子。

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

于 2012-04-25T16:13:08.390 回答
-1

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

于 2014-12-19T18:38:22.450 回答