好的,事情是这样的:
我已经开发这个程序有一段时间了。它的功能是从各种xls文件中搜索、读取和组织数据。
除了一件事之外,大部分内容都可以编译和工作:出于某种原因,有时 libXL不会从该 .xls 文件的单元格中读取字符串或整数。我说随机是因为它只是随机出现,但是每次我运行程序时,对于相同单元格中的相同文件,它总是失败。
我知道这一点是因为我已经操纵代码在它无法读取字符串或数字时通知我(“errortype::invalid_string”、“errortype::num==0”)
该程序是用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;}
如果有人对为什么会发生这种情况有所了解,我们将不胜感激。如果您需要更多信息来解决问题,我很乐意提供。