Всем привет. Может уже было, решил поделиться, преобразование range из Excel в контейнер значений. Вставляем в класс ComExcelDocument_RU
X++:
public Container getRangeValue(MSOfficeBookMark_RU _bookMark,int _workSheet = 1)
{
COM comWorkSheet, comCells, comRange,
comRows,comCols, comItem;
Container con, conRow;
int startRow, endRow, startCol,
endCol, rowCounter, colCounter;
;
if (! m_comDocument)
throw error(StrFmt("@DIS100401", this.getApplicationName()));
comWorkSheet = this.getWorkSheet(_workSheet);
comCells = comWorkSheet.cells();
comRange = this.findRange(_bookMark, _workSheet);
comRows = comRange.Rows();
startRow = comRows.row();
endRow = startRow + comRows.count() - 1;
comCols = comRange.columns();
startCol = comCols.column();
endCol = startCol + comCols.count() - 1;
for(rowCounter = startRow; rowCounter <= endRow; rowCounter++)
{
conRow = conNull();
for(colCounter = startRow; colCounter <= endCol; colCounter++)
{
comItem = COM::createFromVariant(comCells.item(rowCounter, colCounter));
conRow += ComExcelDocument_RU::variant2Str(comItem.value());
}
con = conpoke(con, conlen(con) + 1, conRow);
}
return con;
}
Тестил на 2007 Excel и 2009 Ax