xlnt下载链接:https://github.com/tfussell/xlnt。基本操作介绍:《用XLNT库读写Excel文件》

一、问题描述:

如下图所示:存在excel文件“test.xlsx”,里面内容如下:

使用如下代码读取该excel文件中的内容:

#include <iostream>
#include <xlnt/xlnt.hpp>using namespace std;int main()
{xlnt::workbook wb;wb.load("test.xlsx");auto ws = wb.active_sheet();std::clog << "Processing spread sheet" << std::endl;for (auto row : ws.rows(false)){for (auto cell : row){std::clog << cell.to_string() << std::endl;}}std::clog << "Processing complete" << std::endl;return 0;
}

编译运行,结果发现打印出来的内容乱码:

二、解决方法:

将读取到的内容改变编码方式即可解决该问题。更改代码如下:

#include <iostream>
#include <xlnt/xlnt.hpp>
#include <Windows.h>
#include <wchar.h>using namespace std;//UTF-8编码格式字符串 转普通sting类型
std::string UTF8_To_string(const std::string & str)
{int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴memset(pwBuf, 0, nwLen * 2 + 2);MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf = new char[nLen + 1];memset(pBuf, 0, nLen + 1);WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr = pBuf;delete[]pBuf;delete[]pwBuf;pBuf = NULL;pwBuf = NULL;return retStr;
}int main()
{xlnt::workbook wb;wb.load("test.xlsx");auto ws = wb.active_sheet();std::clog << "Processing spread sheet" << std::endl;for (auto row : ws.rows(false)){for (auto cell : row){//std::clog << cell.to_string() << std::endl;string str1 = cell.to_string();string str2 = UTF8_To_string(str1);std::cout << str2 << std::endl;}}std::clog << "Processing complete" << std::endl;return 0;
}

编译运行,即可发现乱码问题解决了:

使用xlnt库读取excel中文乱码相关推荐

  1. 【C++】使用VS2022和GCC编译Xlnt库读取EXCEL

    目的 因为有需求需要在PC上读取Excel文件,而且得要用C++来实现,故在Github上寻找了下好使的库,于是乎找到了Xlnt库 https://github.com/tfussell/xlnt 我 ...

  2. 初学python,利用pandas读取excel出现乱码的问题

    初学python,利用pandas读取excel出现乱码的问题 初学python,利用pandas读取excel文件时,出现中文乱码: 左侧出现中文乱码 解决过程: 初始判断是是pandas读取中文出 ...

  3. python pandas库读取excel/csv中指定行或列数据详解

    通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...

  4. python读取中文文件乱码-详解Python的json文件读取及中文乱码显示问题解决方法...

    Python的json文件读取及解决中文乱码显示问题 本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: ...

  5. python json.loads()中文问题-Python实现的json文件读取及中文乱码显示问题解决方法...

    本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: { "cities": [ { & ...

  6. php excelreader 中文,如何解决php excel reader导出excel中文乱码?

    解决php excel reader导出excel中文乱码的方法:1.如果不使用dump函数,可以通过修改[_defaultEncoding]变量解决问题:2.如果使用dump函数导出excel,需要 ...

  7. node.js读取文件中文乱码问题

    node.js读取文件中文乱码问题 出现乱码原因: 在windows中,默认的中文编码方式是根据系统的locale决定的,中文系统中的默认的编码方式为gb2312而不是utf-8 解决方法: 如果读取 ...

  8. 使用 c++ libxl库读取Excel

    使用c++ libxl库读取Excel 下载 下载地址:https://www.libxl.com/download.html 解压: 分别为动态库,头文件,静态库 VS配置: 使用 添加头文件 #i ...

  9. CentOS Linux安装中文字体库,解决中文乱码问题

    CentOS Linux安装中文字体库,解决中文乱码问题 原因 解决步骤 fc-list 原因 CentOS中没有安装中文字体库,会出现中文乱码问题,解决问题需安装中文字库 解决步骤 Centos7系 ...

最新文章

  1. vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑
  2. 组件赋值——@Value  ---@PropertySource(value={“classpath:/person.properties“})
  3. win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊
  4. STM32使用FatFs
  5. 在Cloud9上搭建Yii开发环境
  6. HTML渲染过程详解
  7. 深度学习在机器视觉应用领域的最新研究综述(物联网技术应用大作业)
  8. Docker JFrog Artifactory 7.27.10 maven私服(IDEA 实战篇01) linux
  9. JavaScript数据结构和算法简述——前言
  10. MongoDB工具介绍
  11. coco 语义分割_YOLACT++:目前最热门的实时实例分割开源库
  12. 微信数据有望彻底删除了!史上最严隐私法规 GDPR 正式推行
  13. MySQL 使用utf8mb4代替utf8
  14. OpenCV_cv::Mat初始化
  15. 函数图像计算器java版下载_Mathlab图形计算器(Graphing Calculator Mathlab)无广告版下载-Mathlab图形计算器专业版下载v4.14.159-西西软件下载...
  16. 黑马程序员——高新技术(银行业务调度系统)
  17. bzoj5394 [Ynoi2016]炸脖龙 树状数组+拓展欧拉定理
  18. 少儿计算机基础知识,学会这三个小知识,轻松入门少儿编程
  19. 学生成绩管理系统 002
  20. flowable 排他网关

热门文章

  1. 28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
  2. Python 字符串前加r,b,u
  3. 养老保险缴费率上调 谁来买单?
  4. 互联网快讯:中国联通推出5G视频热线;极米Z6X Pro、极米H3S持续热销;丰速运与云快充达成合作
  5. 标准盒模型 与 怪异盒模型
  6. 五一劳动节的由来与发展,你知道吗?
  7. 深圳第一职业技术学校计算机分数线,2018年深圳第一职业技术学校第一批中招录取分数线:382分...
  8. 送什么礼物给小学生比较有纪念意义?适合送小学生的小礼物
  9. 服务器硬盘做过raid5如何设置初始化,服务器做了raid 5之后硬盘怎么分区呢?
  10. 如何以编程方式执行Unwind segue?