Передача большой таблицы в excel
Нужно передать большую таблицу из NAV2015 в excel. Стандартные средства не подойдут т.к. очень долго будет отрабатывать. Поэтому написал следующий код:
Добавил новую функцию в CU 12416 Excel Management
CopyFromRecordset(CellName : Text;ADORecordSet : DotNet "ADODB.RecordsetClass")
XlRange := XlWrkSht.Range(CellName);
XlRange.CopyFromRecordset(ADORecordSet,100,100);
определил локальные переменные:
ADORecordSet DotNet ADODB.RecordsetClass.'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Создал новый отчет или кодеюнит, определил в нем глобальные переменные:
ExcelManagement Codeunit Excel Management
SQLText Text
var_ra Variant
ADOConnectionClass DotNet ADODB.ConnectionClass.'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
ADORecordSetClass DotNet ADODB.RecordsetClass.'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
написал код:
ExcelManagement.OpenBook('C:\TEMP\book1.xlsx');
ExcelManagement.OpenSheet('Sheet1');
SQLText := 'SELECT [G_L Account No_],[Amount] FROM [dbo].[MY COMPANY$G_L Entry]';
ADOConnectionClass := ADOConnectionClass.ConnectionClass();
ADOConnectionClass.Open('Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MY_DB;Data Source=MY_SERVER', '', '', -1);
ADORecordSetClass := ADORecordSetClass.RecordsetClass();
ADORecordSetClass := ADOConnectionClass.Execute(SQLText, var_ra, -1);
ExcelManagement.CopyFromRecordset('A1',ADORecordSetClass);
ExcelManagement.GiveUserControl();
ExcelManagement.CloseBook();
Возникает ошибка на команде XlRange.CopyFromRecordset(ADORecordSet,100,100):
Cannot serialize an instance of the following .NET Framework object: assembly ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, type ADODB.RecordsetClass.
Заранее спасибо за помощь.
|