C#操作Word之2003版处理简析

C#操作Word之2003版处理简析,带制图功能:

成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元项城做网站,已为上家服务,为项城各地企业和个人服务,联系电话:028-86922220

 
 
 
  1. using System;
  2. using System.IO;
  3. using System.Data;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Reflection;
  7. using Microsoft.Office.Core;
  8. using Word = Microsoft.Office.Interop.Word;
  9. using Graph = Microsoft.Office.Interop.Graph;
  10.  //C#操作Word之2003版
  11. namespace NWord
  12. ...{
  13. /**//// 
  14. /// 功能描述:操作word文件
  15. /// 作者:--
  16. /// 使用说明:在工程中添加Word 11.0对象库的引用。该模块在office2003基础上开发。
  17. /// 
  18. public class C_Word
  19. ...{
  20. Variables#region Variables
  21. private string strwordfilename;//文件名
  22. private string strwordfilepath;//文件路径
  23. private bool wordvisible = false;//Word文件操作是否可见
  24. Word._Application WordApp = new Word.Application();
  25. Word._Document WordDoc;
  26. object missing = System.Reflection.Missing.Value;
  27. object oEndOfDoc = "\endofdoc";
  28. #endregion
  29. Properties#region Properties
  30. /**//// 
  31. /// word文件名  ,C#操作Word之2003版
  32. /// 
  33. public string WordFileName
  34. ...{
  35. get ...{ return strwordfilename; }
  36. }
  37. /**//// 
  38. /// word文件路径
  39. /// 
  40. public string WordFilePath
  41. ...{
  42. get ...{ return strwordfilepath; }
  43. }
  44. #endregion
  45. /**//// 
  46. /// 构造word对象
  47. /// 
  48. public C_Word() ...{ }
  49. /**//// 
  50. /// 构造word对象  ,C#操作Word之2003版
  51. /// 
  52. /// word文件全路径
  53. public C_Word(string strfullfilepath)
  54. ...{
  55. WordApp.Visible = false;
  56. strwordfilename = Path.GetFileName(strfullfilepath);
  57. strwordfilepath = Path.GetDirectoryName(strfullfilepath);
  58. CreateWordFile(strfullfilepath);
  59. }
  60. /**//// 
  61. /// 构造word对象
  62. /// 
  63. /// word文件全路径
  64. /// 是否覆盖现有word文件
  65. public C_Word(string strfullfilepath, bool overwrite)
  66. ...{
  67. strwordfilename = Path.GetFileName(strfullfilepath);
  68. strwordfilepath = Path.GetDirectoryName(strfullfilepath);
  69. WordApp.Visible = wordvisible;
  70. if (overwrite || !File.Exists(strfullfilepath))
  71. ...{
  72. CreateWordFile(strfullfilepath);
  73. }
  74. else
  75. ...{
  76. this.Open(strfullfilepath);
  77. }
  78. }
  79. /**//// 
  80. /// 打开word文件
  81. /// 
  82. /// 文件路径
  83. public void Open(string strfilepath)
  84. ...{
  85. object filepath = strfilepath;
  86. object wrdvisible = wordvisible;
  87. //WordApp.Documents.Add(ref filepath, ref missing,
  88.  ref missing, ref wrdvisible);
  89.  //C#操作Word之2003版
  90. WordApp.Documents.Open(ref filepath, ref missing,
  91.  ref missing, ref missing, ref missing
  92. , ref missing, ref missing, ref missing, ref missing
  93. , ref missing, ref missing, ref wrdvisible, ref missing
  94. , ref missing, ref missing, ref missing);
  95. WordDoc = WordApp.Documents.Open(ref   filepath,
  96. ref   missing, ref   wrdvisible, ref   missing,
  97. ref   missing, ref   missing, ref   missing, ref  missing,
  98. ref   missing, ref   missing, ref   missing, ref  wrdvisible,
  99. ref   missing, ref   missing, ref   missing, ref missing);
  100. }
  101. /**//// 
  102. /// 新建word文件
  103. /// 
  104. /// word文件路径
  105. private void CreateWordFile(string strfullfilepath)
  106. ...{
  107. object ofilename = strfullfilepath;
  108. WordDoc = WordApp.Documents.Add(ref missing,
  109.  ref missing, ref missing, ref missing);
  110. //验证路径,C#操作Word之2003版
  111. if (!Directory.Exists(Path.GetDirectoryName(
  112. strfullfilepath))) return;
  113. if (Path.GetExtension(strfullfilepath).
  114. ToLower() != ".doc") return;
  115. try
  116. ...{
  117. if (File.Exists(strfullfilepath)) File.Delete(strfullfilepath);
  118. WordApp.ActiveDocument.SaveAs(ref ofilename,
  119. ref missing, ref missing, ref missing, 
  120. ref missing, ref missing,
  121. ref missing, ref missing, ref missing,
  122.  ref missing, ref missing,
  123. ref missing, ref missing, ref missing, 
  124. ref missing, ref missing);
  125. return;
  126. }
  127. catch
  128. ...{
  129. return;
  130. }
  131. }
  132. /**//// 
  133. /// 从模版创建word文件 ,C#操作Word之2003版
  134. /// 
  135. /// word模版路径
  136. /// word文件路径
  137. public void CreateFileFromDot(string strdotpath,string strdocpath)
  138. ...{
  139. object filepath = strdotpath;
  140. object owordfile = strdocpath;
  141. if (File.Exists(strdocpath))//删除已存在的文件
  142. ...{
  143. File.Delete(strdocpath);
  144. }
  145. WordApp.Documents.Add(ref filepath, ref missing, ref missing, ref missing);
  146. WordApp.ActiveDocument.SaveAs(ref owordfile,
  147. ref missing, ref missing, ref missing, 
  148. ref missing, ref missing,
  149. ref missing, ref missing, ref missing, 
  150. ref missing, ref missing,
  151. ref missing, ref missing, ref missing, 
  152. ref missing, ref missing);
  153. this.Open(strdocpath);
  154. strwordfilepath = Path.GetDirectoryName(strdotpath);
  155. strwordfilename = Path.GetFileName(strdocpath);
  156. }
  157.  //C#操作Word之2003版
  158. /**//// 
  159. /// 向word结尾插入1行数据,不会换行
  160. /// 
  161. /// 插入的字符串
  162. public void WriteLine(string strline)
  163. ...{
  164. object fileName = WordFilePath + WordFileName;
  165. object bvisible = true;
  166. Word.Range wrdRng = WordDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
  167. wrdRng.InsertAfter(strline);
  168. this.Save();
  169. }
  170. /**//// 
  171. /// 将书签更新成字符串
  172. /// 
  173. /// 书签名
  174. /// 更新字符串
  175. public void UpdateBookmark(string bookmarkName, string newText)
  176. ...{
  177. object name = bookmarkName;
  178. Word.Range rng = WordApp.ActiveDocument.Bookmarks.
  179. get_Item(ref name).Range;
  180. rng.Text = newText;
  181. object range = rng;
  182. WordApp.ActiveDocument.Bookmarks.Add(bookmarkName, ref range);
  183. this.Save();
  184. }
  185. /**//// 
  186. /// 将书签更新成字符串,C#操作Word之2003版
  187. /// 
  188. /// word书签
  189. /// 更新字符串
  190. public void UpdateBookmark(Word.Bookmark bookmark, string newText)
  191. ...{
  192. object rng = bookmark.Range;
  193. string bookmarkName = bookmark.Name;
  194. bookmark.Range.Text = newText;
  195. WordApp.ActiveDocument.Bookmarks.Add(bookmarkName, ref rng);
  196. this.Save();
  197. }
  198. /**//// 
  199. /// 更改某表的某个单元格的内容
  200. /// 
  201. /// table id
  202. /// 行id
  203. /// 列id
  204. /// 更新字符串
  205. public void UpdateTableContent(int tableID, 
  206. int lineID, int columnID, string context)
  207. ...{
  208. Word.Table tbl = WordApp.ActiveDocument.Tables[tableID];
  209. tbl.Cell(lineID, columnID).Range.Text = context;
  210. this.Save();
  211. }
  212. /**//// 
  213. /// 插入图表  ,C#操作Word之2003版
  214. /// 
  215. /// 书签名
  216. /// 图表数据源datatable
  217. /// 图表格式
  218. public void InsertChart(string strbookmark, 
  219. DataTable dtsheet,Graph.XlChartType xlcharttype)
  220. ...{
  221. int i, j;
  222. Graph.Chart wrdChart;
  223. Graph.Axis axis;
  224. object oClassType = "MSGraph.Chart.8";
  225. object bookmark = strbookmark;
  226. //在指定的书签位置插入图表
  227. Word.Range wrdRng = WordDoc.Bookmarks.get_Item(ref bookmark).Range;
  228. //初始化一张图表
  229. wrdChart = (Graph.Chart)wrdRng.InlineShapes.
  230. AddOLEObject(ref oClassType, ref missing,
  231. ref missing, ref missing, ref missing,
  232. ref missing, ref missing, ref missing).OLEFormat.Object;
  233. //wrdChart.Application.Visible = false;
  234. wrdChart.Application.PlotBy = Graph.XlRowCol.xlColumns;
  235. //根据Y轴来画图表
  236. //改变图表格式
  237. wrdChart.ChartType = xlcharttype;
  238. axis = (Graph.Axis)wrdChart.Axes(1, 1);//设置X轴的属性
  239. wrdChart.Application.DataSheet.Cells.Clear();
  240. //清空表格的初始数据
  241. //填充图表,起始的行号和列号都是1
  242. for (i = 0; i < dtsheet.Columns.Count; i++)//初始化列名
  243. ...{
  244. wrdChart.Application.DataSheet.Cells[1, i + 1] = 
  245. dtsheet.Columns[i].ColumnName;
  246. }
  247. for (i = 0; i < dtsheet.Rows.Count; i++)//填充数据
  248. ...{
  249. for (j = 0; j < dtsheet.Columns.Count; j++)
  250. ...{
  251. wrdChart.Application.DataSheet.Cells[i + 2, j + 1] = 
  252. dtsheet.Rows[i][j].ToString().Replace("9999999", "100ys");
  253. }
  254. }
  255. //axis.MaximumScale = 1;//X轴最大刻度
  256. //axis.MajorUnit = 0.1;
  257.  //C#操作Word之2003版
  258. wrdChart.Legend.Delete();
  259. wrdChart.Width = 500;
  260. //wrdChart.Height = 666;
  261. //oShape.Height = oWord.InchesToPoints(3.57f);
  262. //更新图表并保存退出
  263. wrdChart.Application.Update();
  264. wrdChart.Application.Quit();
  265. this.Save();
  266. }
  267. /**//// 
  268. /// 清空文档
  269. /// 
  270. public void Clear()
  271. ...{
  272. object Unit = (int)Word.WdUnits.wdCharacter;
  273. object Count = 1;
  274. WordApp.Selection.WholeStory();
  275. WordApp.Selection.Delete(ref Unit, ref Count);
  276. this.Save();
  277. }
  278. /**//// 
  279. /// 另存为
  280. /// 
  281. /// 目标文件路径
  282. public void SaveAs(string strFileName)
  283. ...{
  284. object fileName = strFileName;
  285. WordApp.ActiveDocument.SaveAs(ref fileName,
  286. ref missing, ref missing, ref missing, ref missing,
  287. ref missing, ref missing, ref missing, ref missing,
  288. ref missing, ref missing, ref missing, ref missing,
  289. ref missing, ref missing, ref missing);
  290. }
  291. /**//// 
  292. /// 转到指定的标签处
  293. /// 
  294. /// 标签名
  295. public void GotoBookMark(string strBookMarkName)
  296. ...{
  297. object Bookmark = (int)Word.WdGoToItem.wdGoToBookmark;
  298. object NameBookMark = strBookMarkName;
  299. WordApp.Selection.GoTo(ref Bookmark,
  300.  ref missing, ref missing, ref NameBookMark);
  301. }
  302. /**//// 
  303. /// 删除指定的文本
  304. /// 
  305. /// 被删除的文本
  306. public void DeleteText(string text)
  307. ...{
  308. object findText = text;
  309. object replaceWith = "";
  310. object replaceAll = Word.WdReplace.wdReplaceAll;
  311. this.WordApp.Selection.Find.ClearFormatting();
  312. this.WordApp.Selection.Find.Replacement.ClearFormatting();
  313. this.WordApp.Selection.Find.Replacement.Text = "";
  314. this.WordApp.Selection.Find.Execute(ref findText,
  315. ref missing, ref missing, ref missing, 
  316. ref missing, ref missing, ref missing,
  317. ref missing, ref missing, ref replaceWith,
  318.  ref replaceAll, ref missing, ref missing,
  319. ref missing, ref missing);
  320. object unit = (int)Word.WdUnits.wdCharacter;
  321. object count = 1;
  322. this.WordApp.Selection.Delete(ref unit, ref count);
  323. this.Save();
  324. }
  325. /**//// 
  326. /// 保存当前word文档
  327. /// 
  328. private void Save()
  329. ...{
  330. WordApp.ActiveDocument.Save();
  331. }
  332. /**//// 
  333. /// 关闭Word文件,释放对象;C#操作Word之2003版
  334. ///最后一定要调用此函数,否则会引起异常
  335. /// 
  336. public void Close()
  337. ...{
  338. try
  339. ...{
  340. WordApp.Application.Quit(ref missing, 
  341. ref missing, ref missing);
  342. if (WordApp != null)
  343. ...{
  344. WordApp = null;
  345. }
  346. }
  347. catch
  348. ...{ }
  349. finally
  350. ...{
  351. GC.Collect();
  352. GC.WaitForPendingFinalizers();
  353. GC.Collect();
  354. GC.WaitForPendingFinalizers();
  355. }
  356. }
  357. }
  358. }

C#操作Word之2003版的相关处理就向你介绍到这里,希望对你了解和学习C#操作Word有所帮助。

文章名称:C#操作Word之2003版处理简析
文章地址:http://www.shufengxianlan.com/qtweb/news24/6024.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联