Не удается заставить LibXL xlSheetGetNamedRange работать

Я пытаюсь работать с LibXL. Я могу извлекать данные из листов, но мне нужна функция для преобразования строки с индексами строк и столбцов Excel в startRow, endRow, startCol, endCol, т.е.

"A1:B3" в startRow = 0, endRow = 2, startCol = 0, endCol = 1 (LibXL использует индексирование на основе 0)

Я пробовал все, что мог придумать. В библиотеке нет примеров, использующих эту функцию, и документации довольно мало. Что я делаю неправильно?

Вот мой код:

int main()
{
    const char range[] = "B2:C3";
    int i, ret, rowFirst=0, rowLast=0, colFirst=0, colLast=0;
    BookHandle book;
    SheetHandle sheet;

    book = xlCreateBook();

    ret = xlBookLoad(book, "/home/jason/Downloads/panel.xls");

    sheet = xlBookGetSheet(book, 0);

    ret = xlSheetGetNamedRange(sheet, &range[0], &rowFirst, &rowLast, &colFirst, &colLast);

    printf("ret from xlSheet...Range = %d\n", ret);

    printf("%s\n", xlBookErrorMessage(book));
    printf("rowLast = %d\n", rowLast);
    printf("rowLast = %d\n", rowLast);
    printf("colFirst = %d\n", colFirst);
    printf("colLast = %d\n", colLast);

    return 0;

}

person JJ3    schedule 24.09.2012    source источник


Ответы (1)


используйте для этой цели функцию xlSheetAddrToRowCol():

int rowStart, colStart, rowEnd, colEnd;
int rowRelativeStart, colRelativeStart, rowRelativeEnd, colRelativeEnd;

xlSheetAddrToRowCol(sheet, "B2", &rowStart, &colStart, &rowRelativeStart, &colRelativeStart);
xlSheetAddrToRowCol(sheet, "C3", &rowEnd, &colEnd, &rowRelativeEnd, &colRelativeEnd);
person JJ3    schedule 29.09.2012