C# 导出word文档及批量导出word文档(3)

     在初始化WordHelper时,要获取模板的相对路径。获取文档的相对路径多个地方要用到,比如批量导出时要先保存文件到指定路径下,再压缩打包下载,所以专门写了个关于获取文档的相对路径的类。 

 1  #region 获取文档的相对路径
 2     public class WordFilePath
 3     {
 4         #region 返回文件带路径值
 5         /// <summary>
 6         /// 返回文件带路径值
 7         /// </summary>
 8         /// <param name="FilePth">文件所在文件夹名称</param>
 9         /// <param name="FileName">文件名</param>
10         /// <returns></returns>
11         public static string FileWithFilePath(string FilePth, string FileName = null)
12         {
13             string strFile = "";
14             if (!string.IsNullOrEmpty(FilePth))
15                 strFile += "~/" + FilePth + "/";
16             if (!string.IsNullOrEmpty(FileName))
17                 strFile += FileName;
18 
19             return strFile;
20         }
21         #endregion
22 
23         #region 判断文件或文件夹是否存在
24         /// <summary>
25         /// 判断文件或文件夹是否存在
26         /// </summary>
27         /// <param name="FilePth">文件所在文件夹名称</param>
28         /// <param name="FileName">文件名</param>
29         /// <returns></returns>
30         public static bool ExistFile(string FilePth, string FileName = null)
31         {
32             return System.IO.File.Exists(GetFilePath(FilePth, FileName));
33         }
34         #endregion
35 
36         #region 获取文件及文件夹的相对路径
37         /// <summary>
38         /// 获取文件及文件夹的相对路径
39         /// </summary>
40         /// <param name="FilePth"></param>
41         /// <param name="FileName"></param>
42         /// <returns></returns>
43         public static string GetFilePath(string FilePth, string FileName = null)
44         {
45             string strPath = "";
46             strPath = FileWithFilePath(FilePth, FileName);
47             strPath = HttpContext.Current.Request.MapPath(strPath);
48             return strPath;
49         }
50         #endregion
51     }
52     #endregion 
View Code

     以上方法可以实现了单个word文档带图片的导出功能了,多个文档的生成也可以实现,只是还没有打包下载的代码。
     最后调用的方法如下,要先判断模板是否存在:    

 1  string strpath = "Content/templates"; //模板所在的文件文件夹
 2                 string templateFile = "实习生学习记录表导出模板.doc";
 3                 if (WordFilePath.ExistFile(strpath, templateFile))
 4                 {
 5                     string saveName = WordHelper.SaveDocName(form["NTName"], form["CardNo"]);  //保存的名称
 6                     saveName = HttpUtility.UrlEncode(saveName, Encoding.GetEncoding("utf-8"));
 7                     WordHelper wordhelper = new WordHelper(templateFile);
 8                     getWordInfo(wordhelper, templateFile, NTID, stype.ToString(), majorid.ToString(), sequence.ToString());
 9                     return base.File(wordhelper.ExportDoc().ToArray(), "application/msword", saveName);
10                 }
11                 else
12                 {
13                     return ShowRedirectMessage("导出的模板不存在!", strUrl);
14                 } 
View Code

    getWordInfo方法是为将所需的信息拼凑成一个word文档,减少代码的重复性而提取出来的,如:

 1 #region 将所有信息拼凑成一个word文档
 2         public void getWordInfo(WordHelper wordhelper, string tempFile, string ntid, string stype, string mid, string sequence)
 3         {
 4             if (tempFile.Contains("实习生学习记录表导出模板"))
 5             {
 6                 Dictionary<string, string> dicWhere = new Dictionary<string, string>();
 7                 dicWhere.Add("NTID", ntid);
 8                 wordhelper.GetBasicInfo(typeof(BLL.NewTraineeInfo), dicWhere);
 9                 PrejobTrainWord(wordhelper, ntid);
10                 TrainListWord(wordhelper, ntid, stype, mid);
11                 AwardListWord(wordhelper, ntid, stype, mid);
12                 ArrangeListWord(wordhelper, ntid, stype);
13                 ScoreListWord(wordhelper, ntid, stype, mid, sequence);
14                 EvalWord(wordhelper, ntid, stype, mid);
15             }
16       } 
17 
18        #region 其他信息
19         //岗前培训
20         public void PrejobTrainWord(WordHelper wordhelper, string ntid)
21         {
22             Dictionary<string, string> dicWhere = new Dictionary<string, string>();
23             dicWhere.Add("NTID", ntid);
24             wordhelper.GetBasicInfo(typeof(BLL.PrejobTraining), dicWhere);
25         }
26 
27         //轮科安排表
28         public void ArrangeListWord(WordHelper wordhelper, string ntid, string stype)
29         {
30             Dictionary<string, string> dicWhere = new Dictionary<string, string>();
31             dicWhere = new Dictionary<string, string>();
32             dicWhere.Add("NTID", ntid);
33             dicWhere.Add("StudentType", stype.ToString());
34             wordhelper.GetTableList(typeof(BLL.MajorCycle), dicWhere, "ArrangeList");
35         } 
View Code
ArrangeList是之前在word模板里所设定的如下图,用for循环出列表,
图片

     getWordInfo里其它的方法类似这两个。    

     最后导出的word文档大致如下图所示:              

图片

 

图片

 

转载于:https://www.cnblogs.com/jingshuisihan/p/4604294.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再见收费的 XShell,我改用国产良心工具!

使用或维护Linux系统的都知道&#xff0c;我们日常对服务器的操作&#xff0c;一般都会借助SSH工具远程登录到服务器之后进行操作。常用的SSH工具有不少&#xff0c;比如&#xff1a;Xshell、Putty、SSH Secure Shell Client、secureCRT等等。我使用过其中两种secureCRT和Xshel…

全球六大国际域名解析量统计报告(6月25日)

IDC评述网&#xff08;idcps.com&#xff09;06月29日报道&#xff1a;根据DailyChanges公布的实时数据显示&#xff0c;在2015年6月25日&#xff0c;全球六大国际域名解析量总量持续攀升至153,246,819个&#xff0c;环比6月16日&#xff0c;净增46,078个&#xff0c;涨幅增大3…

Windows 创建符号链接

一、场景分析 1.环境变量 在Windows系统配置 环境变量 的时候&#xff0c;经常会遇到以下 路径 情况&#xff1a; C:\Program Files C:\Program Files (x86)\Common Files2.异常情况 这种路径中&#xff0c;存在空格字符&#xff0c;在一些程序调用时&#xff0c;可能出现异…

1.3w字,一文详解死锁!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone死锁&#xff08;Dead Lock&#xff09;指的是两个或两个以上的运算单元&#xff08;进程、线程或协程&#xff09;&#xff0c;都在等待…

PHP与ThinkPHP读写文件

2019独角兽企业重金招聘Python工程师标准>>> 使用php将数据写入到指定的文件 $str"<?php return".var_export($phiz,true)."?>"; file_put_contents(./Data/phiz.php); 使用php读取指定的文件 …

【图解】透彻Java线程状态转换

大家好&#xff0c;我是阿星&#xff0c;好久不见&#xff0c;欢迎来到Java并发编程系列番外篇线程状态转换&#xff0c;内容通俗易懂&#xff0c;请放心食用。线程状态先来个开场四连问Java线程状态有几个&#xff1f;Java线程状态是如何转换&#xff1f;Java线程状态转换什么…

CentOS7安装Hadoop2.7完整流程

2019独角兽企业重金招聘Python工程师标准>>> 1、环境&#xff0c;3台CentOS7&#xff0c;64位&#xff0c;Hadoop2.7需要64位Linux&#xff0c;CentOS7 Minimal的ISO文件只有600M&#xff0c;操作系统十几分钟就可以安装完成&#xff0c; Master 192.168.0.182 Slav…

如果不这样用,Nacos也有安全问题!

前言配置管理作为软件开发中重要的一环&#xff0c;肩负着连接 代码和环境的职责&#xff0c;能很好的分离开发人员和维护人员的关注点。Nacos 的配置管理功能就很好地满足了云原生应用对于配置管理的需求&#xff1a;既能做到配置和代码分离&#xff0c;也能做到配置的动态…

聊聊Spring事务失效的12种场景,太坑了

前言对于从事java开发工作的同学来说&#xff0c;spring的事务肯定再熟悉不过了。在某些业务场景下&#xff0c;如果一个请求中&#xff0c;需要同时写入多张表的数据。为了保证操作的原子性&#xff08;要么同时成功&#xff0c;要么同时失败&#xff09;&#xff0c;避免数据…

什么是可中断锁?有什么用?怎么实现?

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone在 Java 中有两种锁&#xff0c;一种是内置锁 synchronized&#xff0c;一种是显示锁 Lock&#xff0c;其中 Lock 锁是可中断锁&#xff…

10个经典又容易被人疏忽的JVM面试题

前言整理了10个经典又容易被疏忽的JVM面试题&#xff0c;谢谢阅读&#xff0c;大家加油哈.1. 对象一定分配在堆中吗&#xff1f;有没有了解逃逸分析技术&#xff1f;「对象一定分配在堆中吗&#xff1f;」 不一定的&#xff0c;JVM通过「逃逸分析」&#xff0c;那些逃不出方法的…

面试官:怎么解决MySQL中的死锁问题?

咱们使用 MySQL 大概率上都会遇到死锁问题&#xff0c;这实在是个令人非常头痛的问题。本文将会对死锁进行相应介绍&#xff0c;对常见的死锁案例进行相关分析与探讨&#xff0c;以及如何去尽可能避免死锁给出一些建议。话不多说&#xff0c;开整&#xff01;什么是死锁死锁是并…

ubuntu双系统导致进windows花屏

2019独角兽企业重金招聘Python工程师标准>>> 5600U的集成显卡&#xff0c;装了ubuntu的双系统&#xff0c;居然导致进win7的时候花屏&#xff0c;度娘狗哥都不得求解 网上很多解决方法都说在启动时加上nomodeset&#xff0c;发现对ubuntu15没用&#xff0c;且失去了…

工作总结:日志打印的15个建议

前言 日志是快速定位问题的好帮手&#xff0c;是撕逼和甩锅的利器&#xff01;打印好日志非常重要。今天我们来聊聊日志打印的15个好建议~1. 选择恰当的日志级别 常见的日志级别有5种&#xff0c;分别是error、warn、info、debug、trace。日常开发中&#xff0c;我们需要选择恰…

MFC属性页对话框

属性页对话框 分类 分页和引导 类 CPropertyPage-父亲CDialog类别&#xff0c;所谓的属性页或网页对话框。 CPropertySheet-父类是CWnd&#xff0c;称为属性表单。 一个完整的属性页对话框由一个属性表单多个属性页组成。属性页嵌套在属性表单内。 标签式属性页的创建步骤&…

面试官:ConcurrentHashMap为什么放弃了分段锁?

今天我们来讨论一下一个比较经典的面试题就是 ConcurrentHashMap 为什么放弃使用了分段锁&#xff0c;这个面试题阿粉相信很多人肯定觉得有点头疼&#xff0c;因为很少有人在开发中去研究这块的内容&#xff0c;今天阿粉就来给大家讲一下这个 ConcurrentHashMap 为什么在 JDK8 …

C语言函数指针的应用——自制谐波分析软件

文章目录函数指针简介格式介绍颜色头文件计算机仿真使用说明完整代码部分效果图函数指针简介 如果在一个大型C语言程序中要反复调用函数&#xff0c;而调用的函数又不明确时&#xff0c;函数指针就是一个非常有用的东西。如果你的函数体内可以传递不同的函数&#xff0c;那就非…

PHP5.5四种序列化性能对比

2019独角兽企业重金招聘Python工程师标准>>> 结论&#xff1a; 1、小数组用msgpack,无论空间和性能都最好 2、大数组&#xff0c;考虑空间用igbinary,考虑性能用msgpack json_encode&#xff0c;serialize&#xff0c;igbinary&#xff0c;msgpack四种序列化方式&am…

MyBatis Plus 批量数据插入功能,yyds!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone最近 Review 小伙伴代码的时候&#xff0c;发现了一个小小的问题&#xff0c;小伙伴竟然在 for 循环中进行了 insert &#xff08;插入&a…

C语言打印彩色字符——以(枚举法+字符串查找)为例展示

文章目录C语言颜色头文件——自制非常简单的调用函数实战演练——一个基础的枚举变量小程序牛刀小试——查找字符小程序C语言颜色头文件——自制非常简单的调用函数 显然&#xff0c;C语言是不会提供打印彩色字符的标准函数&#xff0c;而我们有时候为了强调C语言打印的部分字…