在初始化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

C# 导出word文档及批量导出word文档(3)相关推荐

  1. word(2010)宏使用-批量提取word数据

    word 2010 宏的使用 Word中对宏的定义 Word宏的优缺点 Word宏运用实例---批量提取word数据 结语 Word中对宏的定义 Microsoft Word中对宏定义为:" ...

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

    aspose.word主要是通过把读取出来的数据放到datatable里,在datable里做相应的格式的调整,再导出到word文档里.mvc和webform最后导出的语句略有不同,在mvc的cont ...

  3. 根据 Excel 数据表的内容和 Word 模板文件,批量生成 Word 文档

    概要:想必大家都遇到过批量生成 Word 文件的场景.我们这里有一个 Excel 数据表,那么如何根据这个数据表批量地生成 Word 文件呢?有一种方法就是我们常见的邮件合并,但是邮件合并的操作步骤太 ...

  4. php批量导出pdf文件大小,php完美导出pdf,pdf合并批量导出

    使用到的工具 pdftk      https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/      pdf合并工具 wkhtmltopdf      ...

  5. cdrx8如何批量导出jpg_SU基础教程——如何批量导出效果图

    "欢迎关注的我的头条号,私信"福利+头条",可免费获得景观资料大礼包 Sketchup导出二维图形的操作相信很多同学都已经不陌生.调整好角度和阴影,然后点击文件-导出-二 ...

  6. python做的游戏可以导出吗_Python for RenderDoc批量导出模型和贴图

    故事背景: 美术那里有需求,需要别人游戏的模型,来借鉴一下,问我是否有工具可以一键导出模型.我就搜索了一下RenderDoc批量导出图片,结果搜到了用C++改RenderDoc源码的文章.让Rende ...

  7. Spine导出设置和Bat一键批量导出

    目前做的游戏,里面有几百个技能,如果都放一个文件里,一个是SPINE那边不好做,太大了,还有一个U3D这边会非常消耗内存,创建的时候慢,内存占用也特别大,想了下最好的处理办法,是一个技能一个SPINE ...

  8. Revit如何将明细表导出为DWG格式【批量导出图纸】

    一.Revit中怎样将明细表导出到DWG文件中 有时需要将Revit中生成的各种明细表导入到CAD中使用,但是在明细表视图中并没有导出成DWG格式的选项如图1所示,应该如何操作才能导出成CAD可识别文 ...

  9. python中读取word信息_Python实现批量读取word中表格信息的方法

    本文实例讲述了Python实现批量读取word中表格信息的方法.分享给大家供大家参考.具体如下: 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个py ...

最新文章

  1. Java super关键字
  2. c++ 重载 覆盖 隐藏的区别和执行方式
  3. vue如何取消下拉框按回车自动下拉_按逗号拆分Excel单元格,再分离中文数字,春节压岁钱统计就用它...
  4. Linux 线程安全常用的锁机制
  5. html语言 搜索引擎关键词 怎么写,HTML关键词
  6. Java面试知识点(六十五)Java注解(下)——实战篇
  7. Kotlin 元编程(注解,反射)
  8. 在EXCEL中通过VBA实现批量读取文件夹内的文件名称
  9. Codeforces 85D Sum of Medians(线段树)
  10. IP地址分配和IP地址的划分
  11. Java编程思想+Effective Java+Java核心技术+Java核心技术 卷II+Java语言程序设计(中文+英文+源码)
  12. Osg使用osgQt与Qt结合使用(附项目)(1)
  13. 学计算机做人需要有什么基础,计算机专业学生装逼入门(文/郭策)
  14. npm-install 命令报错4048的几种情况和解决方法
  15. cf登录游戏只显示服务器的字体,cf辅助灭天大神修复文件字体花样请求解决方法...
  16. 安装hadoop1.2集群环境
  17. 集美大学计算机网络试题2018,集美大学计算机网络基础选择题.doc
  18. 蚂蚁森林用户须知_关于蚂蚁森林的一些思考。
  19. 死磕原理!新鲜出炉的蚂蚁金服面经
  20. 微信运营神器【运营小秘】封测邀请!

热门文章

  1. lua jit java jit_Lua JIT 2.0 发布了,一百五十倍的性能提升!
  2. linux重新安装xrog文件,Linux下重新生成xorg.conf
  3. django项目如何连接前端_工作笔记前端小白如何搭建前端项目
  4. java局部变量简述
  5. oracle03206,ORACLE数据库创建表空间ORA-03206报错的解决方案
  6. axios获取图片显示_Vue.js+axios图片预览以及上传显示进度
  7. python在线作业_南开大学20春学期《Python编程基础》在线作业参考答案
  8. 在linux实现公平队列,多级反馈队列调度策略在Linux中的应用和实现.pdf
  9. C语言(CED)递归实现汉诺塔问题
  10. CSS中div覆盖另一个div