我有几个XtraGrid中控制含有不同信息的每一个,我得到的方式的一些信息中,你可以在以下方向的XtraGrid中导出到Excel文件http://www.devexpress.com/Support/Center/p /Q362120.aspx
现在有什么办法给每个XtraGrid中控制导出到一个Excel文件,让每一位XtraGrid中的信息导出到一个不同的Excel工作表。
我尝试设置导出路径方向相同的Excel文件,但是当第一个导出过程完成后,第二导出过程改写了Excel文件等。
我试着用在这个方向上所描述的方法XtraGrid中-导出到Excel ,但我想练成库,因为我有经验,使用这个库创建时使用这个库(我的意思是,当一些问题知道是否有另一种方式内部消除使用互操作一个Excel的过程,但你创建后,你不能杀它,即使你使用的是应该这样做)的方法。
任何帮助将受到欢迎。
要做到这一点,你会想一个printableComponentLink添加到每个gridControl,然后创建一个compositeLink,您可以添加每个printableComponent链接的。
此链接可能被证明DevExpress的知识库文章 ,因为它有这样一个例子可以证明是有用的。
然后,你将使用compositeLink.ExportToXlsx
方法。 如果创建XlsxExportOptions
与XlsxExportOptions.ExportMode
属性等于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);
}
}
}
}
希望这样可以节省别人一点点的时间。
在上面的代码中, compositeLink.ExportToXlsx
失败对我来说-没有这样的方法。 当然,我使用的V10.2.5,这是旧的。 我建议从使用的DEVXPRESS网站此链接ShowPreviewDialog
方法,它允许以许多不同的格式导出。 链接也显示了如何做输出的一些定制。 https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraPrintingLinksCompositeLinktopic