Как передать значение массива в Excel
0 (0)
Как передать значение массива в Excel ( publicem 11.05.2016 18:49 )
5(1)Стоит задача экспортировать данные из RS-banka - более 600 тыс строк
Все это выгружается в текстовой файл,который копируется на сторону терминала.
У Excel есть функция импорта текстовых файлов. Что хотелось бы ей воспользоваться
Сейчас файл excel содержит макрос, который запускается с mac.
Хотелось бы и эту функцию расположить в mac.
macro ImportCSV(pExcelSheet, pCellStr, pHideActionFlag) var arr=TArray(11); //TlgActiveX("Excel.Application",null,true); arr.CvtToSafeArray=true; //пробовал с этим параметром var lTmp =Exl.QueryTables.add("TEXT;" + cTermF,Exl.Range("A10")); // Заполнение начинаем с ячейки pCellStr lTmp.name = "test";//TermTempFileName; lTmp.fieldnames = true; lTmp.rownumbers = false; lTmp.filladjacentformulas = false; lTmp.preserveformatting = false; //не сохраняем исходное форматирование lTmp.refreshonfileopen = false; lTmp.refreshstyle = 1; //xlinsertDeleteCells lTmp.savepassword = false; lTmp.savedata = true; lTmp.adjustcolumnwidth = true; // разрешаем раздвигать колонки по размеру данных lTmp.RefreshPeriod = 0; lTmp.textfilepromptonrefresh = false; lTmp.textfileplatform = 866; // кодировка csv файла (866 - Кириллица DOS) lTmp.textfilestartrow = 1; lTmp.textfileparsetype = 1; //xlDelimited lTmp.textfiletextqualifier = 1; lTmp.textfileconsecutivedelimiter = false; lTmp.textfiletabdelimiter = false; // разделитель табуляция lTmp.textfileSemicolonDelimiter = true; lTmp.textfileCommaDelimiter = false; lTmp.textfileSpaceDelimiter = false; lTMp.TextFileColumnDateTypes = arr; lTmp.textfiletrailingminusnumbers = true; lTmp.Refresh(false); END;
Проблема возникает именно здесь
lTMp.TextFileColumnDateTypes = arr;
когда нужно передать в качестве параметра значение элементов массива....
>> ОтветитьВ Excel просто .. ( publicem 11.05.2016 18:52 )
5(1)В 3-х звенке для lgx.d32+lgxs.d32 (+) ( григ 30.05.2016 10:04 )
5(1)Давно уже было реализована передача одномерного массива TArray в ActiveX. В частности для заполнения строки Excel сразу несколькими значениями: Ar=TArray; Ar[0]=...; ExcelApplication.Range().Value=Ar;
Насчет 2-х звенки rslx.d32 сказать ничего не могу. Но может быть проблема в другом: у Вас в примере TArray из 11 элементов, а заполняете вы только 5. Остальные - NULL. A в ActiveX NULL имеет три значения:VT_EMPTY, VT_NULL, VT_ERROR
Наверное надо указать нужный вид NULL или ограничить массив по количеству заполненных реально ячеек.
>> Ответить