xlnt是开源的内存中读、写xlsx文件的C++库。
官网下载源码,https://github.com/tfussell/xlnt。当前最新版是1.4,但是我下载的是xlnt-master.zip。
官网下载CMake,https://cmake.org。当前最新版3.17.0-RC2。下载完成后,安装,记得将cmake路径添加系统变量中PATH中然后在命令行中可以直接调用cmake。
控制台,进入到源码所在目录然后执行以下指令:
mkdir build
cd build
cmake ..
//上面的指令,我在Windows 10+Visual Studio 2017 + SDK 10.0.17763.0中成功执行。CMake 3.15,xlnt 1.3.0的版本。
但是当前的操作系统是Windows 7,使用上面的指令出现错误,找不到ucrtd.lib。实际上就是找不到编译器。
cmake 版本更换为3.15,3.16,3.17都不好用。最后将3.15和3.16卸载,安装3.17。
从网上查资料,但是不好用。通过他的文档修改网上查找到的方法ok。
记录如下:
cmake -DCMAKE_SYSTEM_VERSION:STRING="10.0.17763.0" ..
网上的写法:
cmake -DCMAKE_SYSTEM_VERSION=10.0.17763.0
但是有成功了一次,再执行就不好用了。
cmake -DCMAKE_SYSTEM_VERSION:STRING="10.0.17763.0" ..
从文档中查找到,-D 指定变量的值。CMAKE_SYSTEM_VERSION 指定sdk版本或者说系统的版本。:STRING 指定类型。后面用双引号括起来值。
注意以下问题:
1.中文问题,将中文转换为UTF8 string后直接赋值
char tempArray[128];
WideCharToMultiByte(CP_UTF8, 0, _T("中国"), -1, tempArray, _countof(tempArray), nullptr, nullptr);
2.默认字体问题,原版中文默认的字体不是宋体,修改源码改为宋体。
打开源码xlsx_producer.cpp文件第1772行,将字体修改为如下:
{false, "Hans", "\xe5\xae\x8b\xe4\xbd\x93", "\xe5\xae\x8b\xe4\xbd\x93"},
"\xe5\xae\x8b\xe4\xbd\x93"为宋体汉字的utf8编码。