Word For Application By C#
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using Microsoft.Office;
11 using Microsoft.Office.Core;
12 using Microsoft.Office.Interop;
13 using Microsoft.Office.Interop.Word;
14
15 public partial class _Default : System.Web.UI.Page
16 {
17 protected void Page_Load(object sender, EventArgs e)
18 {
19
20 }
21 protected void Button1_Click(object sender, EventArgs e)
22 {
23 string[] demostr = { "测试数据1", "afsdasd", "fasdfdf", "sdfasdfee33", "asdfddeegadg", "fee都受到" };
24 string url = "http://" + this.Request.Url.Authority + "/demo/全国工业产品生产许可证申请登记表.doc";
25 string urlreadword = "/demo/Officebak/" + SetDocumentBookmarkData(url, demostr, Guid.NewGuid().ToString());
26 Page.RegisterStartupScript("msg", "<script>window.location='" + urlreadword + "';</script>");
27 }
28
29 //设定标签的数据
30 public string SetDocumentBookmarkData(string FileName, string[] demostr, string caseid)
31 {
32 //打开文档
33 Microsoft.Office.Interop.Word.Document wDoc = null;
34 Microsoft.Office.Interop.Word.Application wApp = null;
35 this.OpenWordDoc(FileName, ref wDoc, ref wApp);
36 object oEndOfDoc = "\\endofdoc";
37 object missing = System.Reflection.Missing.Value;
38 //设定标签数据
39 System.Collections.IEnumerator enu = wApp.ActiveDocument.Bookmarks.GetEnumerator();
40
41 string[] strbook = new string[demostr.Length];
42 int i = 0;
43 Microsoft.Office.Interop.Word.Bookmark bk = null;
44 while (enu.MoveNext())
45 {
46 bk = (Microsoft.Office.Interop.Word.Bookmark)enu.Current;
47
48 if (bk.Name.ToString().Trim() != "Table")
49 {
50 strbook[i] = bk.Name.ToString();
51 i++;
52 }
53 }
54
55 object tempobject = null;
56 int length = 0;
57 for (i = 0; i < strbook.Length; i++)
58 {
59 tempobject = strbook[i].ToString();
60 if (wApp.ActiveDocument.Bookmarks.Exists(strbook[i].ToString()))
61 {
62 wApp.ActiveDocument.Bookmarks.get_Item(ref tempobject).Select();
63 wApp.Selection.Text = demostr[i].ToString();
64 }
65
66 }
67 Microsoft.Office.Interop.Word.Table wordTablexSoft = wDoc.Tables[1];
68 InsertTabletoData(wordTablexSoft, ref wDoc, ref wApp);
69
70 //收尾工作
71 object o = null;
72
73 //string guid = System.Guid.NewGuid().ToString();
74 string guid = caseid;
75 object sFileName = Server.MapPath("/demo/Officebak/" + guid + ".doc");
76 if (wDoc.SaveFormat == (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument)
77 {
78 wDoc.Application.ActiveDocument.SaveAs(ref sFileName, ref missing, ref missing,
79 ref missing, ref missing, ref missing,
80 ref missing, ref missing,
81 ref missing, ref missing,
82 ref missing, ref missing, ref missing,
83 ref missing, ref missing, ref missing);
84 }
85
86 wDoc.Close(ref missing, ref missing, ref missing);
87 wApp.Quit(ref missing, ref missing, ref missing);
88
89 if (wDoc != null)
90 {
91 System.Runtime.InteropServices.Marshal.ReleaseComObject(wDoc);
92 wDoc = null;
93 }
94
95 if (wApp != null)
96 {
97 System.Runtime.InteropServices.Marshal.ReleaseComObject(wApp);
98 wApp = null;
99 }
100
101 GC.Collect();
102
103 return guid + ".doc";
104 }
105
106
107 #region 打开word模板和word文件
108
109 public static void OpenWordDot()
110 {
111 //不建议用非标准doc 此处方法 略
112 }
113
114 private void OpenWordDoc(string FileName, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
115 {
116 if (FileName == "") return;
117 Microsoft.Office.Interop.Word.Document thisDocument = null;
118 Microsoft.Office.Interop.Word.FormFields formFields = null;
119 Microsoft.Office.Interop.Word.Application thisApplication = new Microsoft.Office.Interop.Word.ApplicationClass();
120 thisApplication.Visible = true;
121 thisApplication.Caption = "";
122 thisApplication.Options.CheckSpellingAsYouType = false;
123 thisApplication.Options.CheckGrammarAsYouType = false;
124
125 Object filename = FileName;
126 Object ConfirmConversions = false;
127 Object ReadOnly = true;
128 Object AddToRecentFiles = false;
129
130 Object PasswordDocument = System.Type.Missing;
131 Object PasswordTemplate = System.Type.Missing;
132 Object Revert = System.Type.Missing;
133 Object WritePasswordDocument = System.Type.Missing;
134 Object WritePasswordTemplate = System.Type.Missing;
135 Object Format = System.Type.Missing;
136 Object Encoding = System.Type.Missing;
137 Object Visible = System.Type.Missing;
138 Object OpenAndRepair = System.Type.Missing;
139 Object DocumentDirection = System.Type.Missing;
140 Object NoEncodingDialog = System.Type.Missing;
141 Object XMLTransform = System.Type.Missing;
142
143 try
144 {
145 Microsoft.Office.Interop.Word.Document wordDoc =
146 thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
147 ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
148 ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
149 ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
150 ref NoEncodingDialog, ref XMLTransform);
151
152 thisDocument = wordDoc;
153 wDoc = wordDoc;
154 WApp = thisApplication;
155 formFields = wordDoc.FormFields;
156 }
157 catch (Exception ex)
158 {
159
160 }
161 }
162
163 #endregion
164 /// <summary>
165 /// 在objtbale 标签上新增表
166 /// </summary>
167 /// <param name="objTable"></param>
168 /// <param name="wDoc"></param>
169 /// <param name="WApp"></param>
170 /// <returns></returns>
171 private bool InsertTabletoData(Microsoft.Office.Interop.Word.Table wordTable, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
172 {
173
174
175 object Rownum = 5;
176 object Columnnum = 1;
177 wordTable.Cell(18, 2).Split(ref Rownum, ref Columnnum);
178 wordTable.Cell(18, 3).Split(ref Rownum, ref Columnnum);
179 wordTable.Cell(18, 4).Split(ref Rownum, ref Columnnum);
180 wordTable.Cell(18, 5).Split(ref Rownum, ref Columnnum);
181 for (int i = 0; i < 5; i++)
182 {
183 wordTable.Cell(18 + i, 2).Range.Text = "测试1列" + i + "行";
184 wordTable.Cell(18 + i, 3).Range.Text = "测试2列" + i + "行";
185 wordTable.Cell(18 + i, 4).Range.Text = "测试3列" + i + "行";
186 wordTable.Cell(18 + i, 5).Range.Text = "测试4列" + i + "行";
187 }
188
189 return true;
190 }
191 /// <summary>
192 /// 在objtbale 标签上新增表
193 /// </summary>
194 /// <param name="objTable"></param>
195 /// <param name="wDoc"></param>
196 /// <param name="WApp"></param>
197 /// <returns></returns>
198 private bool InsertTabletoBookmark(string objTable, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
199 {
200 object oEndOfDoc = "\\endofdoc";
201 object missing = System.Reflection.Missing.Value;
202
203 object objBookmark = objTable;
204
205 WApp.ActiveDocument.Bookmarks.get_Item(ref objBookmark).Select();
206
207 Microsoft.Office.Interop.Word.Table table = wDoc.Tables.Add(WApp.Selection.Range, 3, 4, ref missing, ref missing);
208 table.Cell(1, 1).Range.Text = "表:" + WApp.ActiveDocument.Bookmarks.get_Item(ref objBookmark).Range.Tables[1].Rows.Count;
209
210 return true;
211 }
212 }
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 using Microsoft.Office;
11 using Microsoft.Office.Core;
12 using Microsoft.Office.Interop;
13 using Microsoft.Office.Interop.Word;
14
15 public partial class _Default : System.Web.UI.Page
16 {
17 protected void Page_Load(object sender, EventArgs e)
18 {
19
20 }
21 protected void Button1_Click(object sender, EventArgs e)
22 {
23 string[] demostr = { "测试数据1", "afsdasd", "fasdfdf", "sdfasdfee33", "asdfddeegadg", "fee都受到" };
24 string url = "http://" + this.Request.Url.Authority + "/demo/全国工业产品生产许可证申请登记表.doc";
25 string urlreadword = "/demo/Officebak/" + SetDocumentBookmarkData(url, demostr, Guid.NewGuid().ToString());
26 Page.RegisterStartupScript("msg", "<script>window.location='" + urlreadword + "';</script>");
27 }
28
29 //设定标签的数据
30 public string SetDocumentBookmarkData(string FileName, string[] demostr, string caseid)
31 {
32 //打开文档
33 Microsoft.Office.Interop.Word.Document wDoc = null;
34 Microsoft.Office.Interop.Word.Application wApp = null;
35 this.OpenWordDoc(FileName, ref wDoc, ref wApp);
36 object oEndOfDoc = "\\endofdoc";
37 object missing = System.Reflection.Missing.Value;
38 //设定标签数据
39 System.Collections.IEnumerator enu = wApp.ActiveDocument.Bookmarks.GetEnumerator();
40
41 string[] strbook = new string[demostr.Length];
42 int i = 0;
43 Microsoft.Office.Interop.Word.Bookmark bk = null;
44 while (enu.MoveNext())
45 {
46 bk = (Microsoft.Office.Interop.Word.Bookmark)enu.Current;
47
48 if (bk.Name.ToString().Trim() != "Table")
49 {
50 strbook[i] = bk.Name.ToString();
51 i++;
52 }
53 }
54
55 object tempobject = null;
56 int length = 0;
57 for (i = 0; i < strbook.Length; i++)
58 {
59 tempobject = strbook[i].ToString();
60 if (wApp.ActiveDocument.Bookmarks.Exists(strbook[i].ToString()))
61 {
62 wApp.ActiveDocument.Bookmarks.get_Item(ref tempobject).Select();
63 wApp.Selection.Text = demostr[i].ToString();
64 }
65
66 }
67 Microsoft.Office.Interop.Word.Table wordTablexSoft = wDoc.Tables[1];
68 InsertTabletoData(wordTablexSoft, ref wDoc, ref wApp);
69
70 //收尾工作
71 object o = null;
72
73 //string guid = System.Guid.NewGuid().ToString();
74 string guid = caseid;
75 object sFileName = Server.MapPath("/demo/Officebak/" + guid + ".doc");
76 if (wDoc.SaveFormat == (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument)
77 {
78 wDoc.Application.ActiveDocument.SaveAs(ref sFileName, ref missing, ref missing,
79 ref missing, ref missing, ref missing,
80 ref missing, ref missing,
81 ref missing, ref missing,
82 ref missing, ref missing, ref missing,
83 ref missing, ref missing, ref missing);
84 }
85
86 wDoc.Close(ref missing, ref missing, ref missing);
87 wApp.Quit(ref missing, ref missing, ref missing);
88
89 if (wDoc != null)
90 {
91 System.Runtime.InteropServices.Marshal.ReleaseComObject(wDoc);
92 wDoc = null;
93 }
94
95 if (wApp != null)
96 {
97 System.Runtime.InteropServices.Marshal.ReleaseComObject(wApp);
98 wApp = null;
99 }
100
101 GC.Collect();
102
103 return guid + ".doc";
104 }
105
106
107 #region 打开word模板和word文件
108
109 public static void OpenWordDot()
110 {
111 //不建议用非标准doc 此处方法 略
112 }
113
114 private void OpenWordDoc(string FileName, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
115 {
116 if (FileName == "") return;
117 Microsoft.Office.Interop.Word.Document thisDocument = null;
118 Microsoft.Office.Interop.Word.FormFields formFields = null;
119 Microsoft.Office.Interop.Word.Application thisApplication = new Microsoft.Office.Interop.Word.ApplicationClass();
120 thisApplication.Visible = true;
121 thisApplication.Caption = "";
122 thisApplication.Options.CheckSpellingAsYouType = false;
123 thisApplication.Options.CheckGrammarAsYouType = false;
124
125 Object filename = FileName;
126 Object ConfirmConversions = false;
127 Object ReadOnly = true;
128 Object AddToRecentFiles = false;
129
130 Object PasswordDocument = System.Type.Missing;
131 Object PasswordTemplate = System.Type.Missing;
132 Object Revert = System.Type.Missing;
133 Object WritePasswordDocument = System.Type.Missing;
134 Object WritePasswordTemplate = System.Type.Missing;
135 Object Format = System.Type.Missing;
136 Object Encoding = System.Type.Missing;
137 Object Visible = System.Type.Missing;
138 Object OpenAndRepair = System.Type.Missing;
139 Object DocumentDirection = System.Type.Missing;
140 Object NoEncodingDialog = System.Type.Missing;
141 Object XMLTransform = System.Type.Missing;
142
143 try
144 {
145 Microsoft.Office.Interop.Word.Document wordDoc =
146 thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
147 ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
148 ref Revert, ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
149 ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
150 ref NoEncodingDialog, ref XMLTransform);
151
152 thisDocument = wordDoc;
153 wDoc = wordDoc;
154 WApp = thisApplication;
155 formFields = wordDoc.FormFields;
156 }
157 catch (Exception ex)
158 {
159
160 }
161 }
162
163 #endregion
164 /// <summary>
165 /// 在objtbale 标签上新增表
166 /// </summary>
167 /// <param name="objTable"></param>
168 /// <param name="wDoc"></param>
169 /// <param name="WApp"></param>
170 /// <returns></returns>
171 private bool InsertTabletoData(Microsoft.Office.Interop.Word.Table wordTable, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
172 {
173
174
175 object Rownum = 5;
176 object Columnnum = 1;
177 wordTable.Cell(18, 2).Split(ref Rownum, ref Columnnum);
178 wordTable.Cell(18, 3).Split(ref Rownum, ref Columnnum);
179 wordTable.Cell(18, 4).Split(ref Rownum, ref Columnnum);
180 wordTable.Cell(18, 5).Split(ref Rownum, ref Columnnum);
181 for (int i = 0; i < 5; i++)
182 {
183 wordTable.Cell(18 + i, 2).Range.Text = "测试1列" + i + "行";
184 wordTable.Cell(18 + i, 3).Range.Text = "测试2列" + i + "行";
185 wordTable.Cell(18 + i, 4).Range.Text = "测试3列" + i + "行";
186 wordTable.Cell(18 + i, 5).Range.Text = "测试4列" + i + "行";
187 }
188
189 return true;
190 }
191 /// <summary>
192 /// 在objtbale 标签上新增表
193 /// </summary>
194 /// <param name="objTable"></param>
195 /// <param name="wDoc"></param>
196 /// <param name="WApp"></param>
197 /// <returns></returns>
198 private bool InsertTabletoBookmark(string objTable, ref Microsoft.Office.Interop.Word.Document wDoc, ref Microsoft.Office.Interop.Word.Application WApp)
199 {
200 object oEndOfDoc = "\\endofdoc";
201 object missing = System.Reflection.Missing.Value;
202
203 object objBookmark = objTable;
204
205 WApp.ActiveDocument.Bookmarks.get_Item(ref objBookmark).Select();
206
207 Microsoft.Office.Interop.Word.Table table = wDoc.Tables.Add(WApp.Selection.Range, 3, 4, ref missing, ref missing);
208 table.Cell(1, 1).Range.Text = "表:" + WApp.ActiveDocument.Bookmarks.get_Item(ref objBookmark).Range.Tables[1].Rows.Count;
209
210 return true;
211 }
212 }
作者:W.M.steve
出处:http://www.cnblogs.com/weisteve/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/weisteve/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。