首页 > 其他分享 >ABP word下载 模板替换 文件下载

ABP word下载 模板替换 文件下载

时间:2023-01-06 16:14:44浏览次数:53  
标签:word string ABP texts Word foreach var textDic 下载

原文:
https://github.com/A-Grass-Code/OpenDemo/tree/main/Word模板文件的替换并生成新的Word文件

引用的包:DocX

代码


        public FileResult Download(int id)
        {
            string filename = $"DailyDiaryTemplate2-{DateTime.Now.ToString("HH_mm_ss_ffff")}.docx";
            string path1 = _hostingEnvironment.WebRootPath + "/TemplateFiles/Quality/DailyDiaryTemplate2.docx";
            string path2 = $"{_hostingEnvironment.WebRootPath}/TemplateFiles/Quality/"+ filename;

            WordTemplateReplace(path1, path2,
             new Dictionary<string, string>()
             {
                 ["ConstructionDate"] = "张三",
                 ["ConstructionTitle"] = "23",
                 ["WeatherCondition"] = "男",
             });

            System.Threading.Thread.Sleep(1000);//模拟延迟

            return  File($"/TemplateFiles/Quality/" + filename, "application/octet-stream", "施工日志.docx");// 返回文件
        }


        public bool WordTemplateReplace(string tempPath, string newWordPath, Dictionary<string, string> textDic)
        {
            try
            {
                var doc = DocX.Load(tempPath);  // 加载 Word 模板文件

                if (textDic != null && textDic.Count > 0)
                {
                    foreach (var paragraph in doc.Paragraphs)   // 遍历当前 Word 文件中的所有(段落)段
                    {
                        foreach (var texts in textDic)
                        {
                            try
                            {
                                paragraph.ReplaceText($"[={texts.Key}]", texts.Value);  // 替换段落中的文字
                            }
                            catch (Exception ex)
                            {
                                // 不处理
                                continue;
                            }
                        }
                    }

                    foreach (var table in doc.Tables)   // 遍历当前 Word 文件中的所有表格
                    {
                        foreach (var row in table.Rows) // 遍历表格中的每一行
                        {
                            foreach (var cell in row.Cells)     //遍历每一行中的每一列
                            {
                                foreach (var paragraph in cell.Paragraphs)  // 遍历当前表格里的所有(段落)段
                                {
                                    foreach (var texts in textDic)
                                    {
                                        try
                                        {
                                            paragraph.ReplaceText($"[={texts.Key}]", texts.Value);  // 替换段落中的文字
                                        }
                                        catch (Exception ex)
                                        {
                                            // 不处理
                                            continue;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }


                doc.SaveAs(newWordPath);

                return true;
            }
            catch (Exception ex)
            {
                // 不处理
                return false;
            }
        }



效果

标签:word,string,ABP,texts,Word,foreach,var,textDic,下载
From: https://www.cnblogs.com/guxingy/p/17030750.html

相关文章

  • bootstrap下载进度条
    原来的web应用中文件下载都是打开一个新的窗口,文件自动下载后需手动关闭新打开的窗口,且没有下载进度显示。<script>window.open(downloadUrl,'__blank');</script>......
  • [转]设置.NET Core支持下载wwwroot下的apk文件
    .netcore项目发布Linux服务器后,有个apk放在wwwroot文件夹下,想请求地址的时候下载apk文件,但是一直提示找不到该文件其他png,txt,html等格式都能访问排查了jexus原因后......
  • SiteFactory编辑器支持Word图片上传
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java"......
  • Caused by: io.lettuce.core.RedisCommandExecutionException: WRONGPASS invalid use
    Redis连接报错RedisCommandExecutionException:WRONGPASSinvalidusername-passwordpair一、问题描述在application.yml中配置Redis连接信息如下:Redisredis:ho......
  • SiteFactory编辑器支持Word图片导入
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,......
  • ExtJS - UI组件 - TabPanel
    ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html转载请注明出处:https://www.cnblogs.com/cqpanda/p/16587500.html更新记录2023年1月2日从笔记迁移到......
  • SiteFactory编辑器支持Word图片一键粘贴
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘......
  • 『中级篇』Docker-Stack部署wordpress(49)
    前面几次对service讲述很多了,创建,启动,停止,删除,service对外的访问的方式,这次用了会继续docker-swarm的services,但是这次用比较一种简单方便的方式来完成,之前说过docker-compo......
  • 学习笔记——过滤器、过滤器的HelloWord、过滤器生命周期
    2023-01-06一、过滤器(Filter)1、概念:Filter是一个实现了特殊接口(Filter)的java类,实现对请求资源(jsp,servlet,html)的过滤的功能。过滤器是一个运行在服务器的程序,优先于请求......
  • 『中级篇』docker的魅力初体验-5分钟安装wordpress不走弯路(三)
    安装截图说话官网安装教程:​​wordpress中文安装教程​​咱们也用docker在一个新的centos虚拟机装一把。光吹说多好没用。开始展示真实的实力的时候了,用我的教程保证5分钟......