我有几个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进程的库,但是在你创建它之后就无法杀死它,即使你已经使用了应该这样做的方法。)
欢迎任何帮助。
答案 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