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阅读更多 →
Keras Conv2D张量形状解析:输入、权重与输出的维度逻辑

Keras Conv2D张量形状解析:输入、权重与输出的维度逻辑

1. 为什么搞懂 Conv2D 的张量形状是写好模型的第一道门槛 刚接触 Keras 做图像任务的朋友,十有八九在 Conv2D 层卡过壳:明明代码跑通了,但一打印 model.summary() 就懵——输入 (None, 224, 224, 3) ,输出怎么突然变成 (No…

2026/6/17 17:14:45阅读更多 →
如何在Windows电脑上免费搭建AirPlay音频接收器:Shairport4w终极解决方案

如何在Windows电脑上免费搭建AirPlay音频接收器:Shairport4w终极解决方案

如何在Windows电脑上免费搭建AirPlay音频接收器:Shairport4w终极解决方案 【免费下载链接】Shairport4w An AirPlay Audio-Receiver for your Windows-PC 项目地址: https://gitcode.com/gh_mirrors/sh/Shairport4w 还在为苹果设备无法直接连接Windows电脑播…

2026/6/17 17:14:45阅读更多 →
AI时代程序员能力重构:从编码执行者到人机协作者

AI时代程序员能力重构:从编码执行者到人机协作者

1. 真实战场:AI没在抢饭碗,它在重划程序员的“能力工资条” 我带过三届校招新人,也给五家不同行业的技术团队做过架构咨询。2023年之前,一个能熟练写Spring BootMyBatis、会调MySQL索引、能搞定Redis缓存穿透的后端工程师&#xf…

2026/6/17 17:14:45阅读更多 →
强化学习实战:从Sarsa算法到On-policy策略优化

强化学习实战:从Sarsa算法到On-policy策略优化

1. Sarsa算法基础:从零理解On-policy学习 第一次接触Sarsa算法时,很多人会困惑它和Q-learning的区别。其实最直观的理解就是:Sarsa是个"保守派",而Q-learning更像"冒险家"。想象你在玩一个迷宫游戏&#xff0…

2026/6/17 17:14:45阅读更多 →
PyTorch Autograd 原理与实战:动态图、Function 机制与梯度调试

PyTorch Autograd 原理与实战:动态图、Function 机制与梯度调试

1. 为什么我坚持手写三遍 autograd 的反向传播逻辑才敢教别人 刚带完上一期的 PyTorch 实战训练营,有位做医学影像算法的博士后问我:“老师,autograd 真的能自动求导?那它到底‘知道’我的网络结构吗?如果我在 forward…

2026/6/17 17:14:45阅读更多 →
i.MX GPU工具链实战:纹理压缩、内存监控与API追踪优化指南

i.MX GPU工具链实战:纹理压缩、内存监控与API追踪优化指南

1. 项目概述:i.MX GPU工具链与内存管理实战在嵌入式图形开发领域,尤其是基于NXP i.MX系列处理器的项目里,图形性能的优化往往是一场与有限硬件资源的“博弈”。CPU算力、GPU带宽、内存容量,每一项都可能成为制约流畅体验的瓶颈。很…

2026/6/17 17:09:44阅读更多 →
飞书机器人接入 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阅读更多 →