|
![]() |
#1 |
Участник
|
Интересно. Видимо второй (и последующие) вызов метода item() натыкается на какой-то мусор, оставшийся после первого вызова. А вызов info() каким-то образом подчищает этот мусор.
В качестве workaround могу предложить позиционироваться на ячейке при помощи метода offset: X++: static void checkExcell(Args _args) { FilePath path=''; container conFilter = ["Файл (*.xls)", "*.xls"]; SysExcelApplication exappl; SysExcelCells excells; SysExcelWorksheets exsheets; SysExcelWorksheet exsheet; SysExcelCell excell; // fix int row; real a,b; ; path = WinAPI::getOpenFileName(0,conFilter,"", "Укажите файл ",'',""); if (!path) return; exappl = SysExcelApplication::construct(); exappl.workbooks().open(path); exsheets = exappl.workbooks().item(1).worksheets(); exsheet = exsheets.itemFromNum(1); excells = exsheet.cells(); excell = excells.item(1,1); // fix for(row = 1;row<3;row++) { //a = excells.item(row,1).value().double(); a = excell.offset(row - 1, 0).value().double(); // fix //info(strfmt('%1',a)); // строка 1 //b = excells.item(row,2).value().double(); b = excell.offset(row - 1, 1).value().double(); // fix info(strfmt('%1',a)); // строка 2 info(strfmt('%1',b)); } exappl.quit(); } |
|
|
За это сообщение автора поблагодарили: Logger (3), Димитрий (1). |
![]() |
#2 |
Участник
|
Да, действительно. Так заработало корректно.
Но, код подобного типа расскидан по системе, т.к. даже не думал, что можно в такое вляпаться. Честно скажу, что в большей степени бы порадовала заплатка на класс работы с Экселем. ![]() |
|
![]() |
#3 |
Участник
|
Да, так и получилось. На SysExcelCells
X++: public SysExcelCell item(int _row, int _column, boolean first = false) { if (first) return SysExcelCell::construct(version,COM::createFromVariant(cells.item(_row,_column))); else { if (!excell) excell = this.item(1,1,true); return excell.offset(_row - 1, _column-1); } } SysExcelCell excell; Работает. |
|
![]() |
#4 |
Участник
|
Но проблем при такой заплатке есть.
Если первая ячейка объединена с рядом стоящими, то работает неверно. |
|
Теги |
excel |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|