马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Book* book1 = xlCreateXMLBook();
if (!book1) {
ExitProcess(0);
}
book1->setKey(L"libxl", L"windows-28232b0208c4ee0369ba6e68abv6v5i3");//注册
book1->load(_T("D:\\bb\\ex.xlsx")); //读取excel文件
Sheet* sheet1 = book1->getSheet(0);//获取指定序号的表
CString str;
const wchar_t* p;
if (sheet1) {
p= sheet1->readStr(1, 2); //读取字符串
str.Format(_T("%s"), p);
::OutputDebugString(str);
}
book1->release();
我的问题:执行p= sheet1->readStr(1, 2) 之后,p为NULL ??
根据您提供的代码,无法准确判断为什么 `p` 变量的值为 `NULL`。可能原因包括:
- Excel 文件中在第 1 行第 2 列没有字符串数据
- 在 `sheet1->readStr(1, 2)` 执行之前出现了错误,可能是文件不存在、文件格式不正确等
- libxl 库的版本过旧或不完整,导致读取 Excel 文件时出现问题
为确定问题所在,您可以参考以下建议:
1. 检查 Excel 文件
确保 Excel 文件中在第 1 行第 2 列确实有纯文本内容。也可以尝试使用其他单元格的位置读取数据,如果能够正常读取,则说明该单元格数据为空。
2. 检查函数调用
使用调试器检查程序流程,或者在代码中添加一些输出语句(如 `printf()` 或 `MessageBox()` 函数),以确定在 `sheet1->readStr(1, 2)` 函数调用前后的情况。
3. 确认 libxl 的版本和完整性
确保使用的 libxl 库的版本较新且完整。可以考虑重新下载、编译并安装库文件。如果使用的是第三方提供的库,则需要确认其来源和稳定性。
总之,问题出在哪里需要进行详细的排查。通过以上方法,您应该能够找到并解决该问题。
|