在我的应用程序中,我使用libxl库读取xlsx文件。从文件中提取并显示在表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());
我应该使用哪种设计模式?
发布于 2014-02-12 03:25:59
为此,我创建了新的csvbook类。
template<class TCHAR>
class csvbook: public libxl::IBookT<char>
{
<...>
}
并从中重新声明所有虚拟方法。下一步,我为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>();
}
https://stackoverflow.com/questions/21698874
复制相似问题