Доброго дня.
Сторонняя программа дает Excel-файл. Я его порезал убрав лишнее. Файл в аттаче. Суть в том, что есть данные в первом столбце и нет во втором. И вот такой код есть:
X++:
static void checkExcell(Args _args)
{
FilePath path='';
container conFilter = ["Файл (*.xls)", "*.xls"];
SysExcelApplication exappl;
SysExcelCells excells;
SysExcelWorksheets exsheets;
SysExcelWorksheet exsheet;
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();
for(row = 1;row<3;row++)
{
a = excells.item(row,1).value().double();
//info(strfmt('%1',a)); // строка 1
b = excells.item(row,2).value().double();
info(strfmt('%1',a)); // строка 2
info(strfmt('%1',b));
}
exappl.quit();
}
Если закомментировать строку 1, но не 2 то будут выводиться одни данные. Если наоборот, то другие.
Во втором случае выводится ожидаемое. В первом же случае, вместо 0 (в ячейке 2-го столбца пусто) получаем данные из первого столбца.
Если в файле во второй колонке проставить значения, а потом удалить - все опять корректно работает.
Axapta 2009.
В 3-й такой проблемы не наблюдаю.