首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt:使用libxl兼容的接口打开csv文件。

Qt:使用libxl兼容的接口打开csv文件。
EN

Stack Overflow用户
提问于 2014-02-11 10:13:38
回答 1查看 654关注 0票数 0

在我的应用程序中,我使用libxl库读取xlsx文件。从文件中提取并显示在表QTableWidget中的数据。但是现在我需要添加对读取csv文件的支持。如何实现与当前代码(libxl方法load()、getSheet()等)兼容( libxl不支持csv)。

代码语言:javascript
运行
复制
Book* book;
if (excelfileName.endsWith(".xlsx")) {
    book = xlCreateXMLBook();
} else if (excelfileName.endsWith(".xls")) {
    book = xlCreateBook();
} else {
    book = new CSVBook();
}

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

我应该使用哪种设计模式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-12 03:25:59

为此,我创建了新的csvbook类。

代码语言:javascript
运行
复制
template<class TCHAR>
class csvbook: public libxl::IBookT<char>
{
    <...>
}

并从中重新声明所有虚拟方法。下一步,我为csvbook 的所有方法编写了带有声明的同一个文件的正文。

函数中创建的对象

代码语言:javascript
运行
复制
template<class TCHAR>
csvbook<TCHAR>* csvCreateBook()
{
    csvbook<TCHAR>* book;
    book = new csvbook<TCHAR>;
    return book;
}

作为结果

代码语言:javascript
运行
复制
Book* book;
if (excelfileName.endsWith(".xlsx")) {
    book = xlCreateXMLBook();
} else if (excelfileName.endsWith(".xls")) {
    book = xlCreateBook();
} else {
    book = csvCreateBook<char>();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21698874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档