word没激活有什么影响,word激活时间过了怎么办

首页 > 实用技巧 > 作者:YD1662023-11-19 11:59:47

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

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

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

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

第三方开源库

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

DuckX库 docx库

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

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


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

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

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

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

读写 Excel

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

QXlsx

word没激活有什么影响,word激活时间过了怎么办(5)

这款开源库支持跨平台,Linux、Windows、Mac、IOS、Android,使用方式支持动态库调用和源码直接集成,非常方便

编译支持 qmake和cmake,可以根据你自己的项目直接集成编译,读写速度非常快

QXlsx::Document xlsx; // 设置一些样式 Qxlsx::Format titleFormat; titleFormat.setBorderStyle(QXlsx::Format::BorderThin); // 边框样式 titleFormat.setRowHeight(1,1,30); // 设置行高 titleFormat.setHorizontalAlignment(QXlsx::Format::AlignHCenter); // 设置对齐方式 // 插入文本 xlsx.write(1,1, "*devstone", titleFormat); // 合并单元格 xlsx.mergeCells(QXlsx::CellRange(2,1,4,4), titleFormat); // 导出保存 xlsx.saveAs("D:/xlsx_export.xlsx"); // 添加工作表 xlsx.addSheet("devstone");

可以看到上手非常容易、各个函数命名也贴近 Qt Api,是一款非常良心的开源软件

PS:注意该软件使用 MIT 许可协议,这样对于很多个人或者公司来说非常良心,意味着你可以无偿使用、修改该项目,但是必须在你项目中也添加同样的 MIP许可

上面也提到了,还可以使用 COM 组件的方式读写 Excel,不过有了这款开源库基本就可以告别 COM组件方式了

读写 PDF

PDF相关开源库挺多的,给了 C 程序员莫大的帮助,目前可用的主要有这些

word没激活有什么影响,word激活时间过了怎么办(6)

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

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

qpdf 库

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

word没激活有什么影响,word激活时间过了怎么办(7)

项目地址

这种方式对环境有特殊要求了,如果你的项目使用的 Qt 版本不支持 WebEngine,那么就无法使用

qtpdf 库

这个库是 Qt 官方亲自操刀对第三方库进行了封装,暴露的 API 和 Qt 类似,使用起来非常舒服

Qt 官方

word没激活有什么影响,word激活时间过了怎么办(8)

上一页123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.