在读取excel的时候发现有些字段无法读取,通过把excel文件解压后对比发现,正常读取和不

能正常读取的字段在sharedString.xml中存储的格式有差异,取其中一个字段,如下图:

正常读取的

不能读取的

对比可以看到其区别,然后查找openxlsx对这块的处理,通过调试代码找到代码如下:

const char* XLSharedStrings::getString(uint32_t index) const
{auto iter = xmlDocument().document_element().children().begin();std::advance(iter, index);return iter->first_child().text().get();
}

通过分析代码上下文,并结合getString函数,发现该字段的内容分别存放到了多个下级节点中,所以无法处理上图的存储格式,找到问题了,做一个兼容即可,修改后的代码如下:

const char* XLSharedStrings::getString(uint32_t index) const
{auto iter = xmlDocument().document_element().children().begin();std::advance(iter, index);static std::string t;t = "";t = iter->first_child().text().get();pugi::xml_node iter_r = iter->first_child();while (!iter_r.empty()){if (!strcmp(iter_r.name(), "r")){pugi::xml_node iter_t = iter_r.first_child();while (!iter_t.empty()){if (!strcmp(iter_t.name(), "t")){t = t + iter_t.text().get();}iter_t = iter_t.next_sibling();}}iter_r = iter_r.next_sibling();}return t.c_str();
}

OpenXLSX 字段读取问题相关推荐

  1. SAP CRM IBASE头部字段读取的具体实现

    本文介绍IBASE头部字段读取的具体实现. 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  2. OpenXLSX 中文字段读取问题

    在读取excel的时候发现有些中文字段无法读取,通过把excel文件解压后对比发现,正常读取和不 能正常读取的中文字段在sharedString.xml中存储的格式有差异,取其中一个字段,如下图: 正 ...

  3. 关于从Image字段读取图片流并显示在PictureBox控件时报‘参数无效’异常的解决方法...

    问题出在存储图片信息的代码中,SqlParameter构造函数中的[Size]参数不是Image字段的长度(16),而是字节数组的长度. 可用一下两种构造方式构造SqlParameter SqlPar ...

  4. 从输入字段读取属性时,HTML编码丢失

    我正在使用JavaScript从隐藏字段中提取值并将其显示在文本框中. 隐藏字段中的值被编码. 例如, <input id='hiddenId' type='hidden' value='cha ...

  5. 分块读取Blob字段数据(Oracle)

    试过了MSSQL的分块读取Blob字段,又尝试在Oracle下完成,发现还是可行的. 首先建立一个存储过程: create or replace procedure PRO_GET_BLOB(     ...

  6. 读取Excel还用POI?试试这款开源工具

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 优雅先生 来源 | my.oschina.net/feichexia/blog/1 ...

  7. @PropertySource与@ConfigurationProperties多种方式读取配置文件详解,附带@PropertySources使用说明

    两个注解都可以读取properties文件或者xml文件,二者可以单独使用也可以结合使用. 一. @PropertySource结合@Value读取指定配置文件 1.准备一个properties文件放 ...

  8. java访问器_ONGN和java字段访问器(get,set)

    1. OGNL(Object-Graphic Native Language) 简单的理解就是OGNL提供了路径访问对象属性的方式.初看这一点很是疑惑,在智能感应,靠"."当道的今 ...

  9. 替换对象所有字段_JVM字段访问优化

    只有经历过地狱般的磨砺,才能练就创造天堂的力量:只有流过血的手指,才能弹出世间的绝响.--泰戈尔 在实际中,Java程序中的对象或许 本身就是逃逸 的,或许因为 方法内联不够彻底 而被即时编译器 当成 ...

最新文章

  1. oracle闪回 分区,Oracle 闪回区(Oracle Flash recovery area)
  2. [Python爬虫] 之三十:Selenium +phantomjs 利用 pyquery抓取栏目
  3. 算法—详细讲解单向链表的实现(python)
  4. main()与_tmain()区别
  5. linux 指令tftp传输文件_tftp命令_Linux tftp 命令用法详解:在本机和tftp服务器之间使用TFTP协议传输文件...
  6. jquery插件之无缝循环新闻列表
  7. 【Quartz】Spring3.2.9 + Quqrtz2.2.1 实现定时实例
  8. android 点击选择文件夹,Android----弹出框选择文件夹目录以及启用新Task打开文件_IT168文库.pdf...
  9. oracle analyze 全部表,Oracle analyze table
  10. java socket返回_java中用Socket向ServerSocket发送信息,ServerSocket用接收到的Socket返回一条信息,但是返回时报错......
  11. 抓住指针的精髓,才算掌握了 C 语言的灵魂!
  12. Android编程 获取网络连接状态 及调用网络配置界面
  13. idea2020版Maven依赖成功导入但仍然报错找不到包解决
  14. java中如何将string 转化成long
  15. 整理了一些已分类的产品Axure元件库,助力正在找Axure组件库的同学高速成长
  16. case when的使用方法
  17. 在解压缩某些文件时出现问题检查计算机上,rar文件解压缩失败解压末端出现错误的解决方法...
  18. Android项目接入魔窗SDK自定义使用
  19. 日本战国武将绰号与称号一览表
  20. 【数理称谓】数术记遗

热门文章

  1. x3250m6系列服务器,IBM服务器X3250 M6 E3-1230v6 8GB 4x3.5 C110 300W 无驱
  2. 凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...
  3. T-SQL 字符串前加 N 是什么意思
  4. c语言非法字符有哪些,98行的四则计算器.(支持括号)加入了非法字符的检测
  5. java solr_通过Java访问Solr服务实例及相关配置
  6. java——获取视频某一帧的图片
  7. Java成神之路技术整理(长期更新)
  8. leetcode 242 有效的字母异位词 C++
  9. 写未来的电子计算机的畅想两百字,未来科技作文200字
  10. CentOS 7.2.1511 x64下载地址