2013-07-22 24 views
0

我在使用devexpress的網格控件在桌面應用程序(C#)中的問題。 我設置了一個數據源,然後導出到Excel.I希望我的所有列都取得該列中最長行值的寬度。 在這個網格中,我使用不同的數據源。從devexpress網格控件的列的autowidth問題

在負載形式我設置:

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.如何設置ladscape我生成的Excel頁面?

感謝

回答

2

對於問題的第一部分,如果你想根據特定的列設置寬度,讓說,第一列,你可以使用

GridView.OptionsView.ColumnAutoWidth = true 

你必須inheret在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); 

注意別人有XlsxExportOptionsPdfExportOptions,RtfExportOptions ...等

0

Tou應該知道BestFitColumns()方法迭代行的數據源來計算列的最佳寬度。

所以,你必須在之後設置你的數據源。

因此,我建議您不要使用此方法,而是手動設置列的寬度。實際上,BestFitColumns()方法大大減緩了網格的加載(如果您正在處理> 1k行)。

對於導出到橫向模式,您可能會找到答案here