当前位置: 首页 > news >正文

docxcpp开源库,用于读写docx

docxcpp

下载地址:
https://github.com/yunxingluoyun/docxcpp

C++.docx读写库,基于 pugixml 和 miniz 实现。

能力概览

分类支持内容
文档打开 / 创建 / 保存.docx
段落新增段落、标题、分页符、样式段落、多 Run 段落
Run粗体、斜体、下划线、字号、字体、颜色、高亮
段落格式对齐、缩进、段前段后、行距(固定/多倍/至少)、Tab Stops、分页控制
表格创建、加行/列、嵌套表格、单元格合并
图片正文/单元格插入,支持文件路径和字节缓冲
超链接正文和表格单元格中的外部超链接
批注段落级批注的写入与读取
页面设置页面尺寸、方向、页边距、Header/Footer 距离、Gutter,支持pt/mm/cm/inches/twips
SectionSection Break、多 Section 读取、Header/Footer 内容(文本/段落)
读取段落、Runs、表格、图片元数据、批注元数据、超链接、Section 配置

项目结构

include/docxcpp/ 头文件 src/ 实现 examples/ 示例 tests/ 测试(含 python-docx 回归验证) 3rdparty/ pugixml、miniz

构建依赖

构建docxcpp本身需要:

  • C++17 编译器
  • CMake 3.20+
  • Python 3

其中:

  • pugixmlminiz已内置在仓库3rdparty/目录中,不需要额外安装
  • Python 3 主要用于运行部分测试
  • 如果只是在你自己的项目里链接已安装好的docxcpp,则不需要额外再关心pugixmlminiz

库构建

默认构建

默认情况下会构建静态库:

cmake-S.-Bbuild cmake--buildbuild

构建静态库

cmake-S.-Bbuild-static-DBUILD_SHARED_LIBS=OFF cmake--buildbuild-static

构建动态库

docxcpp支持跨平台构建共享库:

cmake-S.-Bbuild-shared-DBUILD_SHARED_LIBS=ON cmake--buildbuild-shared

安装库

静态库和动态库都可以通过cmake --install安装:

cmake--installbuild-static--prefix/your/install/prefix cmake--installbuild-shared--prefix/your/install/prefix

安装后会导出:

  • 头文件
  • docxcpp库文件
  • docxcppConfig.cmake
  • docxcppTargets.cmake

默认模板已内嵌到库中,所以安装后的.dll/.so/.dylib不依赖源码目录。

外部项目使用

安装后可通过 CMake 包导入:

find_package(docxcpp CONFIG REQUIRED) target_link_libraries(your_target PRIVATE docxcpp::docxcpp)

如果库安装在非系统默认路径,可以在配置你的项目时传入:

cmake-S.-Bbuild-DCMAKE_PREFIX_PATH=/your/install/prefix

测试

完整测试:

ctest --test-dir build --output-on-failure

其中ctest包含:

  • 常规读写回归
  • python-docx双向互通回归
  • 安装烟雾测试:把当前构建安装到临时前缀,再用独立外部 CMake 工程通过find_package(docxcpp)链接并运行

示例

最小示例— examples/minimal.cpp

docxcpp::Document document;document.add_paragraph("Hello, World!");document.add_heading("A Heading",1);document.save("output.docx");

完整示例— examples/full_feature_5_pages.cpp

覆盖标题、混合 Run、段落格式、表格(含嵌套与合并)、图片、超链接、批注、Section Break、Header/Footer。

读取已有文档— examples/read_existing.cpp

用于演示如何打开现有.docx,读取段落、表格、批注、图片和 section 摘要。

页面、分节、页眉页脚— examples/sections_headers_footers.cpp

用于演示Section、页面尺寸、页边距、首页不同、奇偶页不同以及页眉页脚段落。

字符样式与表格样式— examples/styles_and_tables.cpp

用于演示字符样式引用、表格样式引用、插入段落、单元格合并和嵌套表格。

页面单位示例

document.set_page_size(docxcpp::StandardPageSize::A4);document.set_page_margins(docxcpp::PageMargins{docxcpp::Inches(1.0),docxcpp::Cm(2.0),docxcpp::Inches(1.0),docxcpp::Cm(2.0),docxcpp::Pt(36),docxcpp::Pt(24),docxcpp::Twips(360),});

也可以直接指定常见标准纸型:

document.set_page_size(docxcpp::StandardPageSize::A0);document.set_page_size(docxcpp::StandardPageSize::B5);document.set_page_size(docxcpp::StandardPageSize::Letter);document.add_section_break(docxcpp::Section(docxcpp::StandardPageSize::Legal));

字体样式示例

docxcpp::RunStyle style;style.font_name="Arial";style.character_style_name="Emphasis";style.east_asia_font_name="Microsoft YaHei";style.complex_script_font_name="Amiri";style.all_caps=true;style.strike=true;style.superscript=true;

样式引用示例

document.add_table(3,4,"Light Shading Accent 1");document.set_table_style(0,"Medium Grid 1 Accent 1");docxcpp::RunStyle run_style;run_style.character_style_id="Strong";document.add_styled_paragraph("Styled by character style",run_style);

与 python-docx 对比

详见 docxcpp_vs_python_docx.md。

http://www.jsqmd.com/news/773788/

相关文章:

  • Flutter for OpenHarmony 校园闲置跳蚤市场APP 实战DAY3:商品卡片封装+模拟假数据+分类联动筛选
  • 大路灯护眼灯有必要吗?护眼大路灯最建议买的十个牌子,精选推荐
  • 特斯拉Model 3 CAN总线数据解析:解锁智能汽车的“神经系统“
  • Arm Socrates™ IP工具平台:SoC设计的高效解决方案
  • 2026年加厚铁床主流厂家对比评测 - 品牌宣传支持者
  • MySql基础知识精简版
  • MAA明日方舟助手:解放双手的终极自动化工具完全指南
  • 如何创建引用分区Reference Partition_通过外键关联实现子表与父表同等分区
  • OpenClaw自动化测试帖子
  • AI工具导航:如何利用Awesome列表高效构建技术栈与工作流
  • FastbootEnhance:告别命令行,用图形化界面轻松管理Android设备
  • Sigma规则开发利器:VSCode插件全解析与实战指南
  • SNAP-V架构:边缘计算中的高效脉冲神经网络设计
  • 智能体操作系统AgentOS:架构设计与核心模块实现详解
  • 轻量级进程守护工具openclaw-warden:极简配置与自动化运维实践
  • 开源语音助手BMO:从零构建本地化智能对话系统
  • 弹幕格式转换终极指南:如何3分钟搞定B站弹幕跨平台播放
  • Caveman - 让 AI「少说废话」,节省 75% Token 还更准确 (2026-05-08 02:01)
  • 产品经理没有设计基础,如何用 AI 工具快速画原型
  • AISMM vs. MLPerf/LLMBench/HuggingFace Eval:谁才是大模型评估的黄金标尺?
  • STM32F411机器人小车开发平台解析与实战
  • Taoify跨境独立站零基础建站完整步骤|新手无代码建站教程
  • Webnovel Writer - 让 AI 写长篇小说不再「乱编」和「忘事」
  • 基于VecTextSearch的本地语义搜索:从原理到实践
  • 边界扫描技术:原理、应用与工程实践指南
  • Kali 下 apt install docker-compose 时 pip3 报错怎么办?
  • 智能游戏助手终极指南:如何用MAA彻底告别《明日方舟》重复操作?
  • UPD720201-K8-701‌ 是瑞萨电子(Renesas Electronics)推出的 ‌USB 3.0 主机控制器芯片‌,广泛用于需要高速数据传输和多端口扩展的设备中,支持 xHCI 1.0
  • ARM SoC Designer组件开发与性能优化实战
  • 中小企业如何选低代码开发平台快速搭建应用?核心评估维度与2026年选型指南