Devexpress 将多个XtraGrid控件导出到单个Excel文件
我有几个XtraGrid控件,每个控件都包含不同的信息,我得到了一些关于按照以下方向将XtraGrid导出到Excel文件的方法的信息 现在有没有办法将每个XtraGrid控件导出到单个Excel文件中,以便将每个XtraGrid信息导出到不同的Excel工作表中 我尝试将导出路径方向设置为同一个Excel文件,但当第一个导出过程完成时,第二个导出过程将覆盖Excel文件,依此类推 我试着使用这个方向描述的方法,但我想知道是否有其他方法不使用interop excel库,因为我在使用这个库时遇到了一些问题(我的意思是,在使用这个库时,您创建了一个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库,因为我在使用这个库时遇到
欢迎提供任何帮助。为此,您需要向每个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输出。