|
![]() |
#1 |
Участник
|
Сначала необходимо создать файл Excel.
X++: boolean createExcelFile(container _fieldLabels) { COM workBook; COM application = new COM('Excel.application'); ; try { workBook = this.createEmptyBook(application); if (! workBook) return false; } catch(Exception::Error) { infolog.clear(); info("@SYS55051"); } if(application) { if(workBook) { workBook.Save(); } application.quit(); } return true; } X++: protected str connectionString() { return 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + fileName + ';Mode=ReadWrite|Share Deny None;Extended Properties="Excel 8.0;HDR=No";Persist Security Info=False;'; } X++: COM adx = new COM("ADOX.Catalog"); COM adoConnection, adoErrors, adoError; str txtError; ; adoConnection = new COM("ADODB.Connection"); if(! adoConnection) throw error("Ошибка подключения к источнику данных"); adoConnection.open(this.connectionString(), "", "", -1); if(adoConnection.state() != #adStateOpen) throw error("Ошибка подключения к источнику данных "); adx.ActiveConnection(adoConnection); tbls = adx.Tables(); tbl = new COM("ADOX.Table"); tbl.name("Axapta"); cols = tbl.Columns(); X++: for (i=1;..) { _col = new COM("ADOX.Column"); _col.Name(strfmt("F%1", i)); _col.Type(#adWChar); // Эта и другие константы ADO объявлены в макросе CCADO _cols.Append(_col); } X++: While (queryRun.next()) { table = strfmt("`%1$`", 'Axapta'); queryString = "insert into " + table + "(" + fieldsList + ") values (" + labelsList + ")"; _adoConnection.execute(queryString); } X++: catch(Exception::Error) { if(adoConnection) { adoErrors = adoConnection.Errors(); for(i=0; i < adoErrors.Count(); i++) { adoError = adoErrors.Item(i); txtError = adoError.Description(); error(txtError); } adoConnection.close(); } |
|