C#第三方Aspose.Words.dll导出Word(书签模板)方式说明

摘要:
项目有遇到需要导出Word,在别人写好的基础上去修改样式,导出后发现样式不正确不整齐,于是采用模板的方式重新导出1.模板word文件的制作,本人用office2013,在设计好需要的整个表格之后,在你需要替换的位置"插入"--书签并命名,此命名需要在程序中进行替换将做好的模板word文件放在程序目录下2.引用Aspose.Words.dll3.新建类WordOpAp.cs1publicclassW

项目有遇到需要导出Word,在别人写好的基础上去修改样式,导出后发现样式不正确不整齐,于是采用模板的方式重新导出

1.模板word文件的制作,本人用office2013,在设计好需要的整个表格之后,在你需要替换的位置"插入"--书签 并命名,此命名需要在程序中进行替换

将做好的模板word文件放在程序目录下

2.引用Aspose.Words.dll

3.新建类WordOpAp.cs

C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第1张C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第2张
1  public classWordOpAp
2 {
3 
4         static public object syncseed = new object();
5 
6         /// <summary>
7         ///导出Word
8         /// </summary>
9         privateDocument WordDoc;
10         private bool isOpened = false;//判断word模版是否被占用
11         public void SaveAs(string strFileName, boolisReplace)
12 {
13             if (isReplace &&File.Exists(strFileName))
14 {
15 File.Delete(strFileName);
16 }
17 WordDoc.Save(strFileName);
18 }
19 
20         //基于模版新建Word文件
21         public void OpenTempelte(stringstrTemppath)
22 {
23             WordDoc = newDocument(strTemppath);
24 
25 }
26         public void FillLable(string LabelId, stringContent)
27 {
28 
29             //打开Word模版
30             object bkmC =LabelId;
31             if (WordDoc.Range.Bookmarks[LabelId] != null)
32 {
33                 WordDoc.Range.Bookmarks[LabelId].Text =Content;
34 }
35 }
36         public void ResponseOut(stringfilename)
37 {
38 WordDoc.Save(System.Web.HttpContext.Current.Response, filename, ContentDisposition.Attachment, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
39 }
40 
41         public void OpenWebInline(stringfilename)
42 {
43 
44 WordDoc.Save(System.Web.HttpContext.Current.Response, filename, ContentDisposition.Inline, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
45 }
46 
47         /// <summary>
48         ///设置打开密码
49         /// </summary>
50         /// <param name="pwd"></param>
51         public void SetPassword(stringpwd)
52 {
53 WordDoc.Protect(ProtectionType.ReadOnly, pwd);
54 }
55 
56         /// <summary>
57         ///不可编辑受保护,需输入密码
58         /// </summary>
59         /// <param name="Password"></param>
60         public void NoEdit(stringPassword)
61 {
62 WordDoc.Protect(ProtectionType.ReadOnly, Password);
63 }
64 
65         public void ExportWord(string fileName, stringwordname)
66 {
67             //输出word
68             System.IO.FileInfo file = newSystem.IO.FileInfo(fileName);
69 System.Web.HttpContext.Current.Response.Clear();
70             System.Web.HttpContext.Current.Response.Charset = "GB2312";
71             System.Web.HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.UTF8;
72             //添加头信息,为"文件下载/另存为"对话框指定默认文件名 
73             System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode(wordname, System.Text.Encoding.UTF8));
74             //添加头信息,指定文件大小,让浏览器能够显示下载进度 
75             System.Web.HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
76             //指定返回的是一个不能被客户端读取的流,必须被下载 
77             System.Web.HttpContext.Current.Response.ContentType = "application/ms-word";
78             //把文件流发送到客户端 
79 System.Web.HttpContext.Current.Response.WriteFile(file.FullName);
80             //停止页面的执行 
81 System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
82 
83 }
84 
85         public void ChangWordStyle(string markName, stringcontent)
86 {
87             DocumentBuilder builder = new DocumentBuilder(this.WordDoc);
88 builder.MoveToBookmark(markName);
89             char[] chs =content.ToCharArray();
90             int index = 0;
91             while (true)
92 {
93                 if (index >=content.Length)
94 {
95                     break;
96 }
97                 if (chs[index] == '<')
98 {
99                     if (content.Length > index + 3 && content.Substring(index + 1, 2).ToUpper() == "/P")
100 {
101 builder.Writeln();
102 }
103                     else if (content.Length > index + 7 && content.Substring(index + 1, 6).ToUpper() == "STRONG")
104 {
105                         builder.Font.Bold = true;
106 }
107                     else if (content.Length > index + 8 && content.Substring(index + 1, 7).ToUpper() == "/STRONG")
108 {
109                         builder.Font.Bold = false;
110 }
111                     else if (content.Length > index + 5 && content.Substring(index + 1, 4).ToUpper() == "BR /")
112 {
113 builder.Writeln();
114 }
115                     else if (content.Length > index + 3 && content.Substring(index + 1, 2).ToUpper() == "BR")
116 {
117 builder.Writeln();
118 }
119                     index = content.IndexOf(">", index) + 1;
120 
121 }
122                 else
123 {
124                     if (content.IndexOf("<", index) == -1)
125 {
126                         string text =content.Substring(index);
127 builder.Write(HttpUtility.HtmlDecode(text));
128                         index +=text.Length;
129 }
130                     else
131 {
132                         string text = content.Substring(index, content.IndexOf("<", index) -index);
133 builder.Write(HttpUtility.HtmlDecode(text));
134                         index +=text.Length;
135 }
136 }
137 }
138 
139 }
140 
141     }
WordOpAp

4.导出word方法

C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第3张C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第4张
1  try
2 {
3 
4                 string path = Server.MapPath("../Generate/ExcelModel/"); //目录地址
5                 string templatePath = path + "zxprint.doc";  //自己做好的word
6                 wop.OpenTempelte(templatePath); //打开模板文件
7                 //以下为添加内容到Word
8                 ProjectSubmmit obj = (ProjectSubmmit)Session["ProjectSubmmit"];//此行是自己的实体层,用于获取数据
9                
10                 string FileName = "";
11                 if (obj != null)
12 {
13                     FileName = string.Format("{0}.doc", obj.ProjectNo); 
14                     wop.FillLable("ProjectNo", obj.ProjectNo); //替换word中指定书签的位置
15                     wop.FillLable("GroupNo", obj.Party_Index);
16                     wop.FillLable("CreateTime", obj.MeetingTime.ToString("yyyy年M月d日"));
17                     wop.ChangWordStyle("Description", obj.Description); //改变内容的格式,
18 }
19                 wop.ResponseOut(FileName); //传入的是导出文档的文件名,导出文件
20 }
21             catch
22 {
23 
24             }
View Code

5.附上一段清除html格式的方法

C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第5张C#第三方Aspose.Words.dll导出Word(书签模板)方式说明第6张
1    public static string NoHTML(stringHtmlstring)
2 {
3             if (Htmlstring.Length > 0)
4 {
5                 //删除脚本
6                 Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
7                 //删除HTML
8                 Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
9                 Htmlstring = Regex.Replace(Htmlstring, @"([
])[s]+", "", RegexOptions.IgnoreCase);
10                 Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
11                 Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
12                 Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", """, RegexOptions.IgnoreCase);
13                 Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
14                 Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
15                 Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
16                 Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
17                 Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "xa1", RegexOptions.IgnoreCase);
18                 Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "xa2", RegexOptions.IgnoreCase);
19                 Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "xa3", RegexOptions.IgnoreCase);
20                 Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "xa9", RegexOptions.IgnoreCase);
21                 Htmlstring = Regex.Replace(Htmlstring, @"&#(d+);", "", RegexOptions.IgnoreCase);
22                 Htmlstring = Regex.Replace(Htmlstring, @"&ldquo;", """, RegexOptions.IgnoreCase);//保留【 “ 】的标点符合
23                 Htmlstring = Regex.Replace(Htmlstring, @"&rdquo;", """, RegexOptions.IgnoreCase);//保留【 ” 】的标点符合
24                 Htmlstring.Replace("<", "");
25                 Htmlstring.Replace(">", "");
26                 Htmlstring.Replace("
", "");
27                 Htmlstring =HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
28 }
29             returnHtmlstring;
30         }
View Code

免责声明:文章转载自《C#第三方Aspose.Words.dll导出Word(书签模板)方式说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NOIP2011 提高组合集错误使用find_last_of函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++Vector使用方法

C++内置的数组支持容器的机制,可是它不支持容器抽象的语义。要解决此问题我们自己实现这种类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用须要的头文件:#include <vector>。vector 是一个类模板。不是一种数据类型,vector<int>是一种数据类型。Vec...

C# 实现opc ua服务器的远程连接(转)

原文转自:https://www.cnblogs.com/dathlin/p/7724834.html OPC UA简介 OPC是应用于工业通信的,在windows环境的下一种通讯技术,原有的通信技术难以满足日益复杂的环境,在可扩展性,安全性,跨平台性方面的不足日益明显,所以OPC基金会在几年前提出了面向未来的架构设计的OPC 统一架构,简称OPC UA...

python3替换文件的内容

目标:替换文件中的字符串内容   方法1:使用fileinput包   import fileinput for line in fileinput.input(“要修改的文件名", inplace=1): line=line.replace(“要修改的字符串1”,”要替换的字符串1"") line=line.replace(“要修改...

[Swift]Scanner字符串扫描类

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://w...

关于Java配置文件properties的学习

关于Java配置文件properties的学习摘自:https://www.cnblogs.com/Seanit/p/4555937.html 在Java早期的开发中,常用*.properties文件存储一些配置信息。其文件中的信息主要是以key=value的方式进行存储,在早期受到广泛的应用。而后随着xml使用的广泛,其位置渐渐被取代,不过,目前仍有一...

Python正则表达

```# -*- coding:utf-8 -*-import re re - Support for regular expressions (RE).正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正...