Qt: Открыть CSV-файлы с libxl-совместимым интерфейсом

В моем приложении я использую библиотеку libxl для чтения файлов xls [x]. Данные взяты из файлов и выведены в таблицу QTableWidget.
Но теперь мне нужно добавить поддержку чтения файлов CSV. Как я могу сделать это совместимым с текущим кодом (с помощью методов libxl load (), getSheet () и т. Д.) (Libxl не поддерживает CSV).

Book* book;
if (excelfileName.endsWith(".xlsx")) {
book = xlCreateXMLBook();
} else if (excelfileName.endsWith(".xls")) {
book = xlCreateBook();
} else {
book = new CSVBook();
}

book->load(excelfileName.toLocal8Bit().data());

Какой шаблон дизайна я должен использовать для этого?

0

Решение

Для этого я создал новый класс csvbook

template<class TCHAR>
class csvbook: public libxl::IBookT<char>
{
<...>
}

и переопределить все виртуальные методы от IBookT.
На следующем шаге я написал тело для всех методов csvbook в том же файле с декларацией.

Объект создан в функции

template<class TCHAR>
csvbook<TCHAR>* csvCreateBook()
{
csvbook<TCHAR>* book;
book = new csvbook<TCHAR>;
return book;
}

И как результат

Book* book;
if (excelfileName.endsWith(".xlsx")) {
book = xlCreateXMLBook();
} else if (excelfileName.endsWith(".xls")) {
book = xlCreateBook();
} else {
book = csvCreateBook<char>();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]