C++导出EXCEL开源库xlslib库使用心得

2023-11-03

使用教程

第一步:

        下载xlslib库,本文建立在xlslib2.5.0版本基础上。

        下载地址xlsLib download | SourceForge.net

第二步:

        切换到解压文件目录xlslib\build\msvc2008\;

        打开项目xlslib.sln,编译出现错误,解决办法如下:

                问题1:“sheet_notes”前的类型(构造函数有返回类型或是当前类型名称的非法重定义?)
                解决:
                src/xlslib/note.h
                44-47行
                struct sheet_notes
                {
                uint16_t sheet_idx
                uint16_t sheet_notes;
                }
                成员sheet_notes和结构名一样冲突了
                修改成员名unit16_t sheet_notes为uint16_t _sheet_notes。
                后续用到这个变量的地方也修改,这个编译的时候会提示的。
                note.cpp(342) last_sheet._sheet_notes
                note.cpp(355) sn._sheet_notes
                note.cpp(358) sn._sheet_notes

                问题2:formula.cpp(917) error C2059 语法错误"{"
                解决:
                将function_propertyp = (function_property) {CELLOP_AS_VALUE, A_UNKNOWN};
                修改为
                function_property p ={CELLOP_AS_VALUE, A_UNKNOWN};

                问题3:
                xlslibsrc\xlslib/sheetrec.h(347): error C2059: 语法错误:“类型”
                xlslibsrc\xlslib/sheetrec.h(348): error C2238: 意外的标记位于“;”之前
                xlslibsrc\xlslib/formula_expr.h(382): error C2059: 语法错误:“类型”
                xlslibsrc\xlslib/formula_expr.h(382): error C2238: 意外的标记位于“;”之前
                解决:去库代码修改这几个文件和使用到的地方,将boolean函数改为_boolean

                问题4:xlslibsrc\common\ac-config.win32.h(227): error C2371: “int8_t”: 重定义;不同的基类型。
                解决:
                注释掉该行

                问题5:找不到更重头文件,我用的时候是release版本有问题,debug没有。
                解决:
                按照debug版本修改release版本,项目属性、c/c++、附加包含目录,修改为../../src和.这两个路径。

第三步:拷贝编译好的dll和lib文件到项目中,复制xlslib\src整个路径到项目中,即可使用。

使用心得

1.使用时使用workbook.xformat();后,通过xf_t* xf1 = xf_t::xfDup(xf);创建新的格式,注意要使用不同的格式时需要再次通过xf_t* xf2 = xf_t::xfDup(xf);创建新的格式,不然后面修改xf1会导致之前已使用了xf1的也跟着改变。然后使用workbook.sheet(Str.GetString())->blank(i, j, xf);先把所有需要设置边框的单元格设置上边框,注意,就算是通过workbook.sheet(Str.GetString())->merge合并了,也需要当做没合并之前的单元格位置进行设置,不然就只有合并单元格最前面那个有边框,如下图:

 2.在uncode编码下,一般vs默认就是这个时,请传递label(),等函数wstring(CString/wchar_t),而不是string,不然会中文乱码的,网上说的自己添加判断什么utf-8的,感觉不用添加啊,大不了就是使用wstring或者string中的一个,试一下那个不乱码就用那个。

3.发现单元格不自动换行,暂时没有找到好的办法,但是可以通过设置xf2->SetHAlign(HALIGN_JUSTIFY);进行解决,然后配合空格控制显示在中间,如下图(下划线表示空格):

 

 4.单元格宽度问题,office不识别ws->colwidth(i, 256 * 5);设置的值,但是wps能识别宽度设置。可以通过ws->defaultColwidth(5);进行设置即可,文档里说ws->defaultColwidth参数需要*256,但实际测试不需要。

中文说明文档:xlslib中文说明文档-C++文档类资源-CSDN下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++导出EXCEL开源库xlslib库使用心得 的相关文章

随机推荐

  • matlab神经网络Narxnet非线性自回归神经网络

    Narxnet 非线性自回归神经网络 用法 narxnet inputDelays feedbackDelays hiddenSizes trainFcn inputDelays 输入延时 Row vector of increasing
  • 统计学习方法- 感知机

    感知机是二分类的线性分类模型 其输入为实例的特征向量 输出为实例的类别 取 1和 1二值 1 感知模型 定义 2 感知机学习策略 数据集的线性可分性 感知机学习策略是假设空间中选取使损失函数最小的模型参数w b即感知模型 3 感知机学习算法
  • android activity 切换流程

    一般来说 Android程序主压迫由下列4部分组成 Activity Broadcast Intent Receiver Service Content Provider 本文重点讲解Activity这部分内容 1 Activity基本介绍
  • Go入门教程

    什么是Go语言 Go 又称 Golang 是 Google 的 Robert Griesemer Rob Pike 及 Ken Thompson 开发的一种静态强类型 编译型语言 Go 语言语法与 C 相近 但功能上有 内存安全 GC 垃圾
  • 102263 - ArabellaCPC 2019(部分)解题报告

    link A Is It Easy easy include
  • 使用随机森林回归填补缺失值

    文章目录 一 概述 二 实现 1 导入需要的库 2 加载数据集 3 构造缺失值 4 使用0和均值填充缺失值 5 使用随机森林填充缺失值 6 对填充好的数据进行建模 7 评估效果对比 一 概述 现实中收集的数据 几乎不可能是完美无缺的 往往都
  • 合并两个有序数组(给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。)

    void merge int nums1 int nums1Size int m int nums2 int nums2Size int n 定义 让数组从后往前遍历 int i m 1 int j n 1 int len m n 1 如果
  • Python中安装Beautiful Soup成功后出现No module named 'bs4'

    此篇文章主要用来解决在终端中完成了beautiful soup的成功安装 但是在IDLE中依然出现以下错误 gt gt gt from bs4 import BeautifulSoup Traceback most recent call
  • 我的大学职业规划(大一时的思考)

    我的大学职业规划 文章目录 我的大学职业规划 1 计算机科学与技术专业的发展方向 不仅限于计科 2 大学四年应该做什么 3 学校竞赛与证书考核 4 编程学习的境界 以C 举例 5 考研与就业 考公与参军的抉择 写作时间 2021 5 28
  • 学会这八个技术,你离BAT大厂不远了

    红人榜第七期来咯 本期干货 HTTP 本周最受关注的技术关键词TOP8 往下看吧 在如今这个时间和知识都是碎片化的时代 C站根据C1 C4认证的成长路径 进行知识细化整理 形成系统化的知识图谱 小编根据C1认证的成长路径整理了100篇HTT
  • Linux下Gitee的user和email配置,查看配置信息命令

    Linux下Gitee的user和email配置 查看配置信息命令 查看配置信息 git config l 配置邮箱 git config global user email email 配置用户名 git config global us
  • STM32CUBEMX配置教程(二)时钟等内部参数配置

    STM32CUBEMX配置教程 二 时钟等内部参数配置 基于STM32H743VI 使用STM32CUBEMX两年了 始终觉得这个工具非常的方便 但因为不是经常使用 导致有些要点总是会有些遗忘 因此写下这一系列教程以供记忆 顺便让我这个大萌
  • Python 打造最强表白程序(源码)

    此程序结合数据抓取 微信自动发消息 定时任务 实现一个能每天自动定时给你心爱的 ta 发送 你们相识相恋天数 情话 我爱你的图片 具体的消息如下 每天发送的消息格式如下 message 亲爱的 早上好 今天是你和 Koc 相恋的第 天 今天
  • C++性能测试工具——gperftools的安装

    一 软件安装说明 gperftools的安装有两种方式 一种是源码方式 一种是直接安装模式 这里使用源码安装模式 原因是使用直接安装模式比较简单 安装此软件需要先安装libunwind这个软件 所以这里需要通过源码方式安装libunwind
  • 【机器学习】支持向量机【上】硬间隔

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 机器学习 拉格朗日对偶性 机器学习 核函数 由于字数限制 分成两篇博客 机器学习 支持向量机 上 硬间隔 机器学习 支持向量机 下 软间隔与核函数 支持向量
  • CSS布局flex布局 对齐 等分 均分 详解

    一切都始于这样一个问题 怎样通过 CSS 简单而优雅的实现水平 垂直同时居中 记得刚开始学习 CSS 的时候 看到float属性不由得感觉眼前一亮 顺理成章的联想到 Word 文档排版中用到的的左对齐 右对齐和居中对齐 然而很快就失望的发现
  • 【leetcode】1143.最长公共子序列

    leetcode 1143 最长公共子序列 题目 思路 代码 复杂度 题目 leetcode原题链接 给定两个字符串 text1 和 text2 返回这两个字符串的最长 公共子序列 的长度 如果不存在 公共子序列 返回 0 一个字符串的 子
  • 如何快速查看并定位网页元素代码

    如何快速查看并定位网页元素代码 目的 可以迅速得找出一个网页中对应元素的html代码 1 首先我们打开一个网页 比如 百度首页 2 打开后我们会看到很多的文字链接以及按钮链接 那么我们找到我们想要查看的元素的文字或者按钮 3 我们这里以 百
  • @Cacheable注解属性介绍

    本文目录 1 value cacheNames 属性 2 key属性 3 keyGenerator 属性 4 cacheManager 属性 5 cacheResolver 属性 6 condition 属性 7 unless 属性 8 s
  • C++导出EXCEL开源库xlslib库使用心得

    使用教程 第一步 下载xlslib库 本文建立在xlslib2 5 0版本基础上 下载地址xlsLib download SourceForge net 第二步 切换到解压文件目录xlslib build msvc2008 打开项目xlsl