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阅读更多 →
ExtractorSharp:游戏资源编辑的终极神器,5分钟从零到精通

ExtractorSharp:游戏资源编辑的终极神器,5分钟从零到精通

ExtractorSharp:游戏资源编辑的终极神器,5分钟从零到精通 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp 你是否曾经想要修改游戏中的角色时装、技能图标或者界面元素&…

2026/6/17 16:29:21阅读更多 →
DisplayCAL-py3技术解析:开源色彩管理架构分析与实战指南

DisplayCAL-py3技术解析:开源色彩管理架构分析与实战指南

DisplayCAL-py3技术解析:开源色彩管理架构分析与实战指南 【免费下载链接】displaycal-py3 DisplayCAL Modernization Project 项目地址: https://gitcode.com/gh_mirrors/di/displaycal-py3 DisplayCAL-py3作为DisplayCAL Modernization Project的Python 3移…

2026/6/17 16:29:21阅读更多 →
sata3.0发送数据时需要等对方回消息吗

sata3.0发送数据时需要等对方回消息吗

要看“发送数据”是哪一层。 结论先说:SATA 发送一个 Frame 前后需要等对方回应,但不是每发一个 Dword 都等一次。 可以分成三个阶段: 发送前:要等对方准备好 发送中:连续发送,不逐拍等待 发送后&#xff1…

2026/6/17 16:29:21阅读更多 →
PyTorch原生实现GPT-2:从零构建因果语言模型

PyTorch原生实现GPT-2:从零构建因果语言模型

1. 项目概述:这不是一个“玩具”,而是一次对大模型底层逻辑的硬核解剖你有没有在深夜调试完第十七个transformer模块后,盯着屏幕上那行RuntimeError: expected scalar type Float but found Double发呆?或者翻遍Hugging Face文档&…

2026/6/17 16:29:21阅读更多 →
3分钟掌握UI-TARS Desktop:小白也能用的AI智能助手

3分钟掌握UI-TARS Desktop:小白也能用的AI智能助手

3分钟掌握UI-TARS Desktop:小白也能用的AI智能助手 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop …

2026/6/17 16:29:20阅读更多 →
GitHub CLI终极指南:从终端革命到开发工作流重构

GitHub CLI终极指南:从终端革命到开发工作流重构

GitHub CLI终极指南:从终端革命到开发工作流重构 【免费下载链接】cli GitHub’s official command line tool 项目地址: https://gitcode.com/GitHub_Trending/cli/cli GitHub CLI(gh)不仅仅是一个命令行工具,它是GitHub生…

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