hi,
I try to load nearly a million records to my data structure and page those records using ultrawinGrid only 1000 at a time. This helps me avoid System.OutOfMemory exceptions which could cause otherwise trying to load them directly to an ultrawingrid.
But I have a functionality to export this grid (the entire pages and not 1000 pages alone) to excel. In order to achieve this, I programatically create an ultraWinGrid, and use an ultraDatasource to point to my already loaded data structure. Although I set up my ultraGrid.Datasource property to this ultraDatasource, I am not able to export it using ultraGridExcelExporter. Should I call InitializeRow on all the rows in the programatically created ultrawinGrid?
Thanks for the help in advance.
Shankar
Hi Shankar,
shankarchandru said:Although I set up my ultraGrid.Datasource property to this ultraDatasource, I am not able to export it using ultraGridExcelExporter.
Why not? What's the problem?
If you are creating a WinGrid in code and it's never parented to a form, then my guess is that it's not working because the grid has no BindingContext and so it has no data. Try setting the grid's BindingContext to the same BindingContext as the "real" grid that you are displaying, or to the BindinginContext of the form.
Thanks for the quick update. That was the problem indeed. I am able to export the grid properly from a load on Demand WinGrid.
As I said earlier, I am trying to export a lot of rows. So I had to export the grid to multiple tabs in Excel due to row limitation of Excel. Also, I read another reply from you on a separate forum thread.
http://news.infragistics.com/forums/p/36060/210139.aspx#210139
This article was helpful to export to multiple worksheets in Excel, but I am running into a problem where the FileLimit behavior doesn't stop when we reach 65536 rows in Excel. It seems to stop randomly beyond this. This is a problem since, I have to ensure I add the header row of the grid in each of the worksheets before I start exporting rest of the rows.
Every datagrid row I am exporting into excel strictly uses only 1 row in Excel as well. So I am not sure why this would go wrong.
Thanks for all your help in this matter.
Hello Shankar,
The following case has been created based on your issue: CAS-55950-X6ZX52
Please let me know if you need any further assistance.
Has a ready-made code sample of that workaround has been made available since then?
Hello Emoreau,
What we were discussing here was an issue connected with our excel engine when using 97-2003 excel files, and it was fixed long time ago.
The mentioned limitation only exists up to Excel 2003, and there is no such limitation if you are using Excel 2007. If you would like to export just a portion of the rows on a single worksheet and the other portion to another, you could take a look at the following forum thread where you would be able to find some guidelines how to achieve the desired behavior:
http://community.infragistics.com/forums/p/33116/232324.aspx
If you have any other questions please do not hesitate to contact us.
Hi, I am using UltraGridExcelExporter.Export function to export the rows to excel. However, in my case, where the data is in two bands, when user expands the parent row I get the child rows for that row. I do not load all the child rows upfront. I used BeforeRowExpanded event of grid to load the child rows and add to the dataset bound to grid. I have custom implementation of export selected rows only to excel. But in case when I group by on some column, and try to export the selected rows, BeforeRowExpanded event occurs for each row starting from 1st row. I am unable to understand why BeforeRowExpanded event is getting raised for all the rows. In code , I have not expanded any row. How can I avoid this? I do not want to load all child rows before exporting selected rows to excel. If I do not group by , this BeforeRowExpanded event does not get raised before export. If I put break point on the event, The call stack shows me- > bo.Core.Win.dll!Adaptiv.Operations.Core.DataBrowse.Win.DataBrowserControl.browseGrid_BeforeRowExpanded(object sender, Infragistics.Win.UltraWinGrid.CancelableRowEventArgs e) Line 1189 C# Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGrid.OnBeforeRowExpanded(Infragistics.Win.UltraWinGrid.CancelableRowEventArgs e) + 0x98 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGrid.FireEvent(Infragistics.Win.UltraWinGrid.GridEventIds id, System.EventArgs e) + 0xe21 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGridRow.Expanded.set(bool value) + 0x183 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGridGroupByRow.UltraGridGroupByRow(Infragistics.Win.UltraWinGrid.UltraGridBand band, Infragistics.Win.UltraWinGrid.RowsCollection parentCollection, Infragistics.Win.UltraWinGrid.UltraGridColumn groupByColumn, object commonValue) + 0xad bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGridGroupByRow.UltraGridGroupByRow(Infragistics.Win.UltraWinGrid.UltraGridBand band, Infragistics.Win.UltraWinGrid.RowsCollection parentCollection, Infragistics.Win.UltraWinGrid.UltraGridColumn groupByColumn, Infragistics.Win.UltraWinGrid.UltraGridRow firstRow) + 0x11b bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.CreateGroupByRowsHelper(Infragistics.Win.UltraWinGrid.UltraGridRow[] rows, ref int startIndex, bool rowsAlreadySorted) + 0x22a bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.InitGroupByRows() + 0x213 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.SyncRowsHelper(System.Collections.IList boundList) + 0x944 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.SyncRows() + 0x82c bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.EnsureNotDirty() + 0x70 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.EnsureFiltersEvaluated() + 0x356 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ScrollCountManagerSparseArray.VerifyAgainstScrollVersion() + 0xca bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ScrollCountManagerSparseArray.GetItemAtVisibleIndex(int visibleIndex) + 0x2c bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.GetRowAtVisibleIndex(int visibleIndex, bool includeSpecialRows) + 0xe9 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.GetFirstVisibleRow(bool includeSpecialRows) + 0x34 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowsCollection.GetFirstVisibleRow() + 0x2a bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.FirstRow.get() + 0x41a bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ViewStyleBase.RecreateRowList(Infragistics.Win.UltraWinGrid.RowScrollRegion rsr) + 0x13f bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.RegenerateVisibleRows(bool resetScrollInfo) + 0xfa bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.RegenerateVisibleRows() + 0x2a bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.RowScrollRegion.WillScrollbarBeShown(Infragistics.Win.UltraWinGrid.ScrollbarVisibility assumeColScrollbarsVisible) + 0x21e bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ScrollRegionBase.WillScrollbarBeShown() + 0x39 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ViewStyleBase.AddBandHeaders(Infragistics.Win.UltraWinGrid.ColScrollRegion csr, Infragistics.Win.UltraWinGrid.UltraGridBand band) + 0x258 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ViewStyleVertical.RecreateHeaderList(Infragistics.Win.UltraWinGrid.ColScrollRegion csr) + 0x2af bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ColScrollRegion.RegenerateVisibleHeaders() + 0x104 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ColScrollRegionsCollection.InitializeMetricsHelper() + 0x139 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.ColScrollRegionsCollection.InitializeMetrics() + 0x50 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGridLayout.ApplyLoadedBands() + 0x3c3 bytes Infragistics2.Win.UltraWinGrid.v10.2.dll!Infragistics.Win.UltraWinGrid.UltraGrid.Export(Infragistics.Win.UltraWinGrid.IUltraGridExporter exporter) + 0x1f7 bytes Infragistics2.Win.UltraWinGrid.ExcelExport.v10.2.dll!Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter.Export(Infragistics.Win.UltraWinGrid.UltraGrid grid, Infragistics.Excel.Worksheet worksheet, int startRow, int startColumn) + 0x3ea bytes Infragistics2.Win.UltraWinGrid.ExcelExport.v10.2.dll!Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter.Export(Infragistics.Win.UltraWinGrid.UltraGrid grid, Infragistics.Excel.Workbook workbook, int startRow, int startColumn) + 0x121 bytes Regards, Vani.
Hi,
When you export the grid, the grid creates a clone of it's DisplayLayout along with a clone of the rows collection. This allows you to modify the export layout or the export rows without modifying the on-screen grid.
The exporter expands all of the cloned rows, on the assumption that you want to export all of the grid rows, and that the export should not be based on the current expanded state of a row on the screen.
I think what you can do is trap the InitializeRow event on the UltraGridExcelExporter and set e.SkipDescendants to true for any parent row whose children you do not want to export.
Hi Hardik,
What version of the Infragistics controls are you using? Infragistics2 just means that the assemblies are built against CLR2. So I don't know what version you are using. If you are saying you are using NetAdvantage 2.0, then no, that version was released long before Excel2007 existed and therefore it cannot possibly support exporting to Excel2007 format. That feature could not possibly have been added before version 7 or maybe even later.
Is there any way to export to 2007 format(.xlsx) by using infragistics2 and CLR 2.
because i told to upgrade my application which export the reports in 2007 format.but when i have tried by adding the extension it is throwing me an error.
Regards,
Hardik
I'm a little confused by your question. As far as I know, exporting to Excel2007 or higher format requires CLR3 or higher. Otherwise, you would have to write your own compression class and provide it to the export method. So I'm not sure how you could be exporting at all.
Hi Friends,
I am using Infragestics2 with .net framework 2.0.
I am using the Export functionality which is working fine for .xls format (2003) But i want to add support for the .xlsx (2007/2010) too.
I have tried to add the extension .xlsx but it is throwing error saying "Excel cannot open the file because the file format or file extension is not valid.varify that the file has not been corrupted and that the file extension matches the format of the file.
Any Idea ?
Please help.