DevExpress Office File API使用记录
目录1 RichEditorControl控件不包含Save类型事件2 Document和SubDocument关系3 如何在类库中使用DevExpress Office File API4 测试Demo创建记录4.1 创建类库4.2 创建Winform项目相关demohttps://download.csdn.net/download/mingjing941018/929636961 RichEditorControl控件不包含Save类型事件2 Document和SubDocument关系Document和SubDocument都是interfaceSubDocument是Document基类SubDocument定义了基本功能Document在其基础上定义了特定功能在正文的处理中只能使用Document对象针对页眉页脚的操作使用SubDocument对象可保证适用于正文的那些操作不会误操作到页眉页脚。3 如何在类库中使用DevExpress Office File API1.添加Nuget包DevExpress.Document.ProcessorDevExpress.RichEdit.Core2.示例代码/// summary /// 文档打开/保存/编辑 /// /summary public class DocumentService : IReportEditor, IDisposable { private readonly RichEditDocumentServer _server; public DocumentService() { _server new RichEditDocumentServer(); } /// summary /// 打开 Word 文档返回可编辑的文档流 /// /summary /// param namefilePath/param /// returns/returns public TaskStream OpenDocumentAsync(string filePath) { return Task.Run(() { _server.LoadDocument(filePath); var stream new MemoryStream(); _server.SaveDocument(stream, DocumentFormat.OpenXml); stream.Position 0; return (Stream)stream; }); } /// summary /// 从流创建新文档 /// /summary /// returns/returns public TaskStream CreateNewAsync() { return Task.Run(() { _server.CreateNewDocument(); var stream new MemoryStream(); _server.SaveDocument(stream, DocumentFormat.OpenXml); stream.Position 0; return (Stream)stream; }); } /// summary /// 保存文档 /// /summary /// param namedocumentStream/param /// param namesavePath/param /// returns/returns public Task SaveDocumentAsync(Stream documentStream, string savePath) { return Task.Run(() { documentStream.Position 0; _server.LoadDocument(documentStream, DocumentFormat.OpenXml); _server.SaveDocument(savePath, DocumentFormat.OpenXml); }); } /// summary /// 导出为 PDF /// /summary /// param namedocumentStream/param /// param namepdfPath/param /// returns/returns public Task ExportToPdfAsync(Stream documentStream, string pdfPath) { return Task.Run(() { documentStream.Position 0; _server.LoadDocument(documentStream, DocumentFormat.OpenXml); _server.ExportToPdf(pdfPath); }); } public void Dispose() { _server?.Dispose(); } }4 测试Demo创建记录4.1 创建类库创建类库项目目标框架.NET Standard 2.1在项目中引入包DevExpress.Document.Processor、DevExpress.RichEdit.Core和DevExpress.Xpo创建4个文件夹BlazorBlazor网站使用、Common公共类平台无关、Models实体对象类、WinWinform窗体应用使用在Models文件夹下创建TReportData类用以保存报告数据在Win文件夹下创建TReportEditorWin类用以和窗体类应用程序交互在TReportEditorWin类中添加域函数插入方法InsertVariableField和加载数据方法LoadData添加TReportTemplet数据实体保存模板二进制流数据在TReportEditorWin类中添加模板二进制流保存和获取方法在TReportEditorWin类中添加除指定域函数外其他部分不可编辑的设置方法ProtectDocumentExceptFields4.2 创建Winform项目创建窗体项目目标框架.NET 8.0注DevExpress项目主界面设置一系列功能按钮不同的按钮打开不同的界面模板编辑界面使用RichEditControl加CreateAllTabs在右侧留出一小块位置模拟域函数数据列表在模板编辑界面初始化时初始化模拟自定义域函数及其拖拽事件左键点击选择域函数行并拖动拖到RichEditor编辑区域松开将域函数插入到鼠标光标处在模板编辑界面加载报告模板时会将报告模板的二进制流数据保存到数据库中添加报告编辑界面用来加载模板合并数据进行报告信息编辑在报告编辑界面调用ProtectDocumentExceptFields设置报告那些部分可编辑目前整个文档禁止编辑尚未处理

相关新闻

洛雪音乐音源配置完全指南:5分钟打造你的专属无损音乐库 [特殊字符]

洛雪音乐音源配置完全指南:5分钟打造你的专属无损音乐库 [特殊字符]

洛雪音乐音源配置完全指南:5分钟打造你的专属无损音乐库 🎵 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为找不到好听的音乐而烦恼吗?想要免费享受全网无…

2026/6/17 14:22:56阅读更多 →
Minecraft服务器性能优化终极指南:用Spark快速解决卡顿问题

Minecraft服务器性能优化终极指南:用Spark快速解决卡顿问题

Minecraft服务器性能优化终极指南:用Spark快速解决卡顿问题 【免费下载链接】spark A performance profiler for Minecraft clients, servers, and proxies. 项目地址: https://gitcode.com/gh_mirrors/spark6/spark Spark 是一款专为Minecraft客户端、服务器…

2026/6/17 14:22:56阅读更多 →
Forza Mods AIO:地平线4和5的终极游戏增强工具全解析

Forza Mods AIO:地平线4和5的终极游戏增强工具全解析

Forza Mods AIO:地平线4和5的终极游戏增强工具全解析 【免费下载链接】Forza-Mods-AIO Free and open-source FH4 & FH5 mod tool 项目地址: https://gitcode.com/gh_mirrors/fo/Forza-Mods-AIO Forza Mods AIO是一款专为《极限竞速:地平线4》…

2026/6/17 14:22:56阅读更多 →
ZigBee 3.0协议栈开发实战:从网络架构到安全机制的深度解析

ZigBee 3.0协议栈开发实战:从网络架构到安全机制的深度解析

1. ZigBee 3.0协议栈开发:从入门到精通的实战指南如果你正在为智能家居、工业传感或任何需要低功耗、自组织无线网络的物联网项目选型,那么ZigBee 3.0大概率已经进入了你的视野。作为一名在嵌入式无线领域摸爬滚打多年的开发者,我经历过从Zig…

2026/6/17 15:43:40阅读更多 →
IDE项目管理进阶:链接顺序、构建目标与工作区布局实战解析

IDE项目管理进阶:链接顺序、构建目标与工作区布局实战解析

1. 项目窗口与核心管理逻辑在任何一个集成开发环境里,项目窗口都是你的“作战指挥中心”。它不仅仅是文件列表,更是整个项目构建逻辑、资源组织和编译流程的视觉化呈现。理解它的运作机制,是摆脱“盲目点击”,实现高效、可控开发的…

2026/6/17 15:43:40阅读更多 →
关节里的“原位”细胞:武汉云克隆犬关节软骨细胞(AC)原代细胞让体外研究无限逼近体内真实

关节里的“原位”细胞:武汉云克隆犬关节软骨细胞(AC)原代细胞让体外研究无限逼近体内真实

“我家狗最近走路一瘸一拐,早上起来半天才能站起来。”宠物医院里,这样的主诉越来越常见。骨关节炎(OA)是犬最常见的退行性关节疾病之一,据估计约20%的成年犬受其影响,且发病率随年龄增长显著上升。更棘手的…

2026/6/17 15:43:40阅读更多 →
focus.nvim完全配置手册:掌握黄金比例窗口布局的7个关键设置

focus.nvim完全配置手册:掌握黄金比例窗口布局的7个关键设置

focus.nvim完全配置手册:掌握黄金比例窗口布局的7个关键设置 【免费下载链接】focus.nvim Auto-Focusing and Auto-Resizing Splits/Windows for Neovim written in Lua. A full suite of window management enhancements. Vim splits on steroids! 项目地址: htt…

2026/6/17 15:43:40阅读更多 →
okbiye 跳出模板化桎梏:一套贴合高校评审标准的开题报告原生创作体系

okbiye 跳出模板化桎梏:一套贴合高校评审标准的开题报告原生创作体系

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT开题报告 - Okbiye智能写作https://www.okbiye.com/ai/ktbg 引言:被重复模板困住的开题写作困局 每一届毕业季,无数本科生、研究生都会陷入同一种学术内耗:开题报告…

2026/6/17 15:43:40阅读更多 →
[实战指南] 2026年制造业FAI报告自动生成的全流程解析与实施路径

[实战指南] 2026年制造业FAI报告自动生成的全流程解析与实施路径

在 2026 年的数字化工厂环境中,FAI 报告自动生成(FAI report auto generation)已成为质量管理体系(QMS)中的标配。面对日益复杂的航空航天零件或高精度汽车组件,传统的“手工量取Excel 填报”模式已无法满足…

2026/6/17 15:38:38阅读更多 →
飞书机器人接入 OpenClaw 完整落地部署指南(含安装包)

飞书机器人接入 OpenClaw 完整落地部署指南(含安装包)

OpenClaw 2.7.9 对接飞书机器人完整配置教程 本文讲解借助长连接模式打通 OpenClaw 与飞书的操作流程,配置完成后,可在飞书私聊、群组内发送指令,调用本地 AI 实现电脑自动化操作。整体流程分为飞书平台创建应用、权限配置、密钥填写三大环节…

2026/6/17 10:40:20阅读更多 →
嵌入式处理器技术演进与飞思卡尔实战解析:从架构选型到系统设计

嵌入式处理器技术演进与飞思卡尔实战解析:从架构选型到系统设计

1. 嵌入式处理器:从“大脑”到“神经系统”的进化 在电子设备无处不在的今天,我们很少会去思考一个智能设备是如何“思考”和“行动”的。无论是汽车引擎的精准控制、工厂机械臂的流畅运转,还是智能家居的自动响应,其背后都离不开…

2026/6/17 10:40:20阅读更多 →
如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南

如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南

如何高效使用BallonTranslator:3分钟完成漫画翻译的完整实用指南 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地…

2026/6/17 10:40:20阅读更多 →