我在桌面应用程序(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可以是列表或dataTable。
1.有人可以帮我自动调整列的长度吗?
2.如何设置ladscape我生成的Excel页面?
由于
答案 0 :(得分:2)
对于问题的第一部分,您可以使用
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);
其他人请注意XlsxExportOptions
,PdfExportOptions
,RtfExportOptions
...等等
答案 1 :(得分:0)
Tou应该知道BestFitColumns()
方法会迭代数据源的行,以计算列的最佳宽度。
因此,您必须将 AFTER 设置为数据源。
因此,我建议您不要使用此方法并手动设置列的宽度。实际上,BestFitColumns()
方法会大大减慢网格的加载速度(如果您处理的是> 1k行)。
对于导出到横向模式,您可能会找到答案here。