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/7/2 18:54:46阅读更多 →
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/7/2 19:35:40阅读更多 →
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/7/2 18:57:45阅读更多 →
传输层的拥塞控制

传输层的拥塞控制

一、拥塞的成因 1.1、2个发送方2个接收方和一台具有无穷大缓存的路由器 假设主机A和主机B都经过同一个路由器,且路由器有无限缓存,路由器的链路容量是R,如下图所示: 主机A中的应用程序以λin 字节/秒的平均发送速率将数据从应用层…

2026/7/3 7:44:16阅读更多 →
本地多模态模型选型实战:Qwen与Gemma中文OCR与长上下文对比

本地多模态模型选型实战:Qwen与Gemma中文OCR与长上下文对比

1. 项目概述:这不是跑分榜,而是一份本地多模态推理的实战选型手记我干这行十多年,从最早在双路Xeon上硬扛Llama 2 13B开始,到现在用一台轻薄本跑Qwen-3.5-9B做文物识别,踩过的坑比模型参数还多。今天这篇不是照搬Huggi…

2026/7/3 7:44:16阅读更多 →
PointBeV:稀疏化BEV感知范式,实现自动驾驶感知效率与性能双突破

PointBeV:稀疏化BEV感知范式,实现自动驾驶感知效率与性能双突破

1. 从密集到稀疏:为什么我们需要重新思考BEV感知的计算范式如果你在过去几年里关注过自动驾驶或者机器人领域的感知技术,Birds-Eye View(BEV,鸟瞰图)这个词一定不会陌生。它几乎成了多传感器融合和下游任务&#xff08…

2026/7/3 7:44:16阅读更多 →
从OpenAI实践看AI研发:为何基础设施是效率倍增器

从OpenAI实践看AI研发:为何基础设施是效率倍增器

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 在AI领域,有一个残酷的现实:好点子从来不是稀缺资源。你去任何一个技术论坛,都能看到成百上千个…

2026/7/3 7:44:16阅读更多 →
WebGoat JWT漏洞实战:逻辑越权与签名绕过深度解析

WebGoat JWT漏洞实战:逻辑越权与签名绕过深度解析

1. 项目概述:从靶场实战到漏洞原理的深度拆解 如果你正在学习Web安全,尤其是认证与授权相关的漏洞,那么OWASP WebGoat这个“故意不安全的”Web应用靶场,绝对是你绕不开的实战演练场。最近,我花了些时间专门研究了WebG…

2026/7/3 7:44:16阅读更多 →
从Unity场景搭建到IoT数据驱动:我的数字孪生入门路径分享

从Unity场景搭建到IoT数据驱动:我的数字孪生入门路径分享

本文分享一个非科班出身的开发者,如何在15天内走通数字孪生全流程,并附上技术栈拆解和学习建议。 写在前面 2026年,数字孪生赛道持续升温。全球市场规模预计达到339.7亿美元(Fortune Business Insights数据)&#xff0…

2026/7/3 7:39:16阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中,LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头,其核心是一颗高性能CMOS图像传感器,配合专用解码芯片,能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”,而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号,但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后,…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”,而是一份实操者手记:当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书,也不是学术会议的议程表,而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →