随机(但一致地)LibXL无法从.XLS读取字符串或数字

时间:2015-07-22 20:02:33

标签: c++ excel libxl

好的,这就是事情:

我现在已经开发了这个程序很长一段时间了。它的功能是搜索,读取和组织各种xls文件中的数据。

除了一件事之外,一切都在编译和工作: 出于某种原因,有时libXL只是不会从中读取字符串或整数 该.xls文件的单元格。我随机说,因为它只是随机的, 但 EVERYTIME 我运行该程序,它始终失败的相同文件 相同的细胞。

我知道这是因为我已经操纵了代码,以便在无法读取字符串或数字时通知我(" errortype :: invalid_string"," errortype :: num = = 0&#34)

该程序是用 c ++,windows 7,Visual Studio Express 2013

编写的

这是 getval()函数的代码片段

std::string getval(cell x, libxl::Sheet* y){
std::string header= "none";

if (y->cellType(x.row, x.col) == libxl::CELLTYPE_EMPTY)
    header = "none";

else if (y->cellType(x.row, x.col) == libxl::CELLTYPE_BLANK)
    header = "none";

else if (y->cellType(x.row, x.col) == libxl::CELLTYPE_STRING){
    if (info_level > 2)std::cout << "\n" << "Getting value from cell: (" << x.row << ", " << x.col << ")";

    const wchar_t* s = y->readStr(x.row, x.col);

    if (s){
        std::wstring w = std::wstring(s);
        header = std::string(w.begin(), w.end());
    }
    else
        header = "errortype::invalid_string";

}

else if (y->cellType(x.row, x.col) == libxl::CELLTYPE_NUMBER){
    long long num = 0;
    num = y->readNum(x.row, x.col);
    //int res = int(num);

    if (num != 0){
        std::stringstream ss;
        ss << num;
        header = ss.str();
    }
    else
        header = "errortype::num==0";

}

else if (y->cellType(x.row, x.col) == libxl::CELLTYPE_BOOLEAN)
    header = "errortype::celltype_bool";

else if (y->cellType(x.row, x.col) == libxl::CELLTYPE_ERROR)
    header = "errortype::celltype_error";



    return header;}

如果有人对这可能发生的原因有所了解,那就非常感激了。如果您需要更多信息来解决问题,我很乐意提供。

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪个版本的DLL。

对于整数读数问题,您可以尝试

double num = y->readNum(x.row, x.col);

似乎我之前遇到过同样的问题。

更改字符串类型的类似试验。