【问题标题】:problems with autowidth for columns of a grid control from devexpress来自 devexpress 的网格控件列的自动宽度问题
【发布时间】:2013-07-20 21:34:51
【问题描述】:

我在桌面应用程序 (C#) 中使用来自 devexpress 的网格控件。 我设置了一个数据源,然后我导出到 Excel。我希望我的所有列都采用该列中最长行值的宽度。 在这个网格中,我使用不同的数据源。

在我设置的加载表单中:

gvExport.OptionsPrint.AutoWidth = false;
gvExport.BestFitColumns();
grdExport.DataSource = ds;

XlsExportOptions vOptions = new XlsExportOptions();
vOptions.TextExportMode = TextExportMode.Text;
vOptions.ShowGridLines = true;
vOptions.SheetName = "Test";

prmFileName = "Test.xls";

grdExport.ExportToXls(prmFileName, vOptions);

我的 ds 可以是列表或数据表。

1.有人可以帮我自动调整列的长度吗?

2.如何设置我生成的Excel页面?

谢谢

【问题讨论】:

    标签: c# excel grid devexpress


    【解决方案1】:

    对于问题的第一部分,您可以使用

    GridView.OptionsView.ColumnAutoWidth = true
    

    如果您想根据特定列设置宽度,假设您必须继承 GridView 的第一列,然后覆盖函数 BestFitColumn 和 OnColumnWidthChanged。

    对于第二部分,您必须像这样使用打印系统:

            PrintableComponentLink link = new PrintableComponentLink(new PrintingSystem());
            link.PaperKind = System.Drawing.Printing.PaperKind.A4;
            link.Component = myGridControl;
            link.Landscape = true;
    

    然后使用ExportOption,这里以Xls为例:

     XlsExportOptions _Options1 = new XlsExportOptions();
     _Options1.SheetName = fileName;
     _Options1.ExportMode = XlsExportMode.SingleFile;
     link.ExportToXls(sfd.FileName, _Options1);
    

    注意其他人有XlsxExportOptionsPdfExportOptionsRtfExportOptions ...等

    【讨论】:

      【解决方案2】:

      你应该知道BestFitColumns() 方法迭代数据源的行以计算列的最佳宽度。

      所以,你必须把它放在之后设置你的数据源。

      因此,我建议您不要使用此方法,而是手动设置列的宽度。事实上,BestFitColumns() 方法会大大减慢网格的加载速度(如果您正在处理 >1k 行)。

      对于导出到横向模式,您可能会找到答案here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多