C++(Qt) 和 Word、Excel、PDF 交互总结

日常开发软件可能会遇到这类小众需求,导出数据到 、 以及 文件,如果你使用 编程语言,那么可以选择的方案不是很多,恰好最近刚好有这部分需求,整理下这段时间踩过的坑,方便后人

PS: 目前采用一种通用的、跨平台的方案来代替下面的方便,可能会更好一些,详细可以看下面这篇文章

C++/Qt workd 跨平台、通用

读写 Word

日常开发的软件使用最多的应该是导出数据到 文档中,目前可以用的方案有这几种

  • 将该文档另存为 文档
  • 读取文档内容进行变量替换
  • 保存替换后的内容,写入文件

这种方式难点在于 格式拼接,任何缺失字段都会导致导出失败,适合小众需求下导出

图片问题其实可以手动进行转化,文档导出成功后手动拷贝内容到新的文档,这样图片就真正插入到文档中,文档发送给别人也不会丢失图片了

还有一个坑就是:如果你使用 打开导出的文档,默认显示的是 视图,需要手动进行调整

某些电脑分辨率变化也会导致生成的文档中字体等产生变化

第三方开源库

可以使用的第三方库几乎没有, 络上找到的有这么几个

  • OpenOffice: 兼容性差,集成调用难度大
  • LibOffice: 太庞大,不容易集成
  • DuckX: 太小众,只能简单的使用
  • docx:小众库

DuckX库
docx库

在读写 这部分, 基本没有可以使用的第三方库,不像其他语言、、有很多可以选择,这个痛苦也只有 程序员能够理解了吧

所以怎么选择还是看自己项目需求吧,没有十全十美的方案


上面说了这么多,都是导出生成 ,那么下面来看看有那些方式可以读取显示 内容

这种需求应该不会很多,而且显示难度更大一些

使用 组件方式,即采用 框架显示 文档内容,本质上就是在我们编写的 界面上嵌入 的软件,这种方式其实和直接打开 查看没有啥区别,效果、性能上不如直接打开更好一些

目前一般都会采用折中方案,把 转为 进行预览加载显示,我们知道 渲染库比较多,生态相对来说要好一些,在选择上就更广泛些,如何使用后面部分有专门介绍 章节

读写 Excel

目前有一个支持比较好的第三方库可以使用,整体使用基本可以满足日常使用

QXlsx

其中 和 属于功能强大但是很难编译的那种,需要有扎实的三方库编译能力,否则面对 个依赖库会无从下手

不过可喜的是 上有两个开源库可以供选择

qpdf 库

这个库其实封装了 库,使用 来执行 进而加载文件

代码结构以及使用 Demo

可正常访问的仓库地址:https://github.com/PDFium/PDFium

相关类可以看这个文档:https://developers.foxit.com/resources/pdf-sdk/c_api_reference_pdfium/modules.html

总结

以上就是项目中常用的文档处理方法总结,当然了肯定也还有其它方案可以实现,毕竟条条大路通罗马,如果你还要不错的方案和建议欢迎留言

PS: 以上方案和对应的源码编译、使用例子会统一上传到 对应的仓库,方便后人使用,有需要的可以关注下

取之互联 、回 互联

推荐阅读

  • Qt Creator 源码学习笔记01,初识QTC
  • Qt Creator 源码学习笔记02,认识框架结构结构
  • Qt Creator 源码学习笔记03,大型项目如何管理工程
  • Qt Creator 源码学习笔记04,多插件实现原理分析
  • Qt Creator 源码学习笔记 05,菜单栏是怎么实现插件化的li>

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月22日
下一篇 2022年10月22日

相关推荐