.Net 操作Word
来源:互联网 发布:wp7软件下载 编辑:程序博客网 时间:2024/06/05 22:24
使用.Net 操作Word
摘要:很多朋友在使用Office三大件做文档报告时,都会发现每天做的工作都是十分的繁琐和重复,要是有一款程序自动化生成word文档,那么是不是可以减轻我们的工作量,为公司节约工作量呢,并且还能减少出错率。下面用一个实例来讲解:简历自动生成软件。
- 关键字
- VB.NET
- 操作Word,Excel
- Winform
- C#.net
说明:使用VS2012创建的程序。在类库中需要引用以下DLL。
- 注意
- 名称 Microsoft.Office.Interop.Word
- 开发工具vs2012
(一) 新建程序
在VS中搭建如下界面
(二) 添加代码
代码块
/// <summary> /// 生成简历 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnReport_Click(object sender, EventArgs e) { string TemplateFile = System.IO.Path.Combine(Application.StartupPath, @"模板\简历表.doc"); //判断模板文件是否存在, 如果不存在则终止程序继续运行 if (System.IO.File.Exists(TemplateFile) == false) { MessageBox.Show("找不到模板文件 : " + TemplateFile); } /// <summary> /// Office 操作函数 wordClass 类 /// </summary> OfficeClass.wordClass Word = new OfficeClass.wordClass(); Word.NewCom(true);//激活Word //将两个字符串组合成一个路径。 //从模板新建一个 Word 文件 Word.NewDocWithModel(TemplateFile, true); //将当前线程挂起一段时间, 以待 Word 文件完成加载 System.Threading.Thread.Sleep(1000); //写入主题 Word.GotoBookMark("theme");//跳转到这个书签 Word.InsertText(TbxTheme.Text);//写入文本 #region 关于代码 GotoSelectTableInsText 的解释 /* Word.GotoSelectTableInsText(1, 3,TbxName.Text); * 此种书签定位数据插入法是和单个书签定位插入法不同之处在于, * 此种方法是跳转到一个书签, 而这个书签的指定的内容必须是一个范围, 此范围内包含有 X 行和 X 列, * 然后找到此范围书签内的 X 行 X 列来进行数据插入 */ #endregion //写入简历基本信息 #region 开始写入数据到基本资料表格, 第一个 Word.GotoBookMark("table1");//跳转到这个书签 Word.GotoSelectTableInsText(1, 2, TbxName.Text); //姓名 Word.GotoSelectTableInsText(2, 2,TbxAge.Text); //年龄 Word.GotoSelectTableInsText(3, 2,TbxAddress.Text); //籍贯 Word.GotoSelectTableInsText(4, 2,TbxHealth.Text); //健康状况 Word.GotoSelectTableInsText(1, 4, TbxSex.Text); //性别 Word.GotoSelectTableInsText(2, 4, TbxNation.Text); //民资 Word.GotoSelectTableInsText(3, 4, TbxPoliticalStatus.Text); //政治面貌 Word.GotoSelectTableInsText(4, 4, TbxHistory.Text); //疾病历史 //插入头像 string temPic=System.IO.Path.Combine(Application.StartupPath, @"模板\1.bmp"); if (System.IO.File.Exists(temPic) == false) { MessageBox.Show("找不到图片文件 : " + temPic); } else { Word.GotoBookMark("picture");//跳转到这个书签 Word.InsertPic(temPic); } Word.SaveAsButQuit(System.IO.Path.Combine(TbxSave.Text,TbxTheme.Text+".doc"));//保存后不退出 #endregion }
(三) 模板设定
增加添加一个简历的模板,在Bin文件夹下,内容如下图所示
添加头像的图片,如下图所示
(四) Office类库
这是一个用VB编写的类库,可以用工具转换成C#代码。这里代码很简单。
如果有功能不够用,可以在VBA中然后添加到这个类库的方法中。
Imports Microsoft.Office.InteropImports System.IOImports System.Windows.FormsImports System.Globalization'###########################'###QQ:570534352 ########'###作者:郑礼帅 ########Public Class wordClass Public oWordApplic As Word.Application 'Word应用程序 Public oDocument As Word.Document '当前word文档 Public iDocument As Word.Document '另一份word文档 Public oRange As Word.Range '一个范围 Public oSelection As Word.Selection '选中 Public oTable As Word.Table '表格 Public Function oWordApp() As Word.Application Return oWordApplic End Function ''' <summary> ''' 激活当前文档 ''' </summary> ''' <remarks></remarks> Public Sub oDocumentActivate() oDocument.Activate() End Sub ''' <summary> ''' 激活com word接口 ''' </summary> ''' <remarks></remarks> ''' <param name="viewDoc" >是否显示word</param> Public Sub NewCom(ByVal viewDoc As Boolean) '激活com word接口 oWordApplic = New Word.Application oWordApplic.Visible = viewDoc End Sub ''' <summary> ''' 生成空的新文档 ''' </summary> ''' <remarks></remarks> ''' <param name="viewDoc" >是否显示word</param> Public Sub NewDocument(ByVal viewDoc As Boolean) Dim missing = System.Reflection.Missing.Value Dim isVisible As Boolean = viewDoc oDocument = oWordApplic.Documents.Add(missing, missing, missing, missing) oDocument.Activate() End Sub ''' <summary> ''' 建立一个新的模板 ''' </summary> ''' <remarks></remarks> ''' <param name="FileName">传入一个word的路径</param> ''' <param name="viewDoc" >是否显示word</param> Public Sub NewDocWithModel(ByVal FileName As String, ByVal viewDoc As Boolean) Try Dim missing = System.Reflection.Missing.Value Dim isVisible As Boolean = viewDoc Dim strName As String strName = FileName oDocument = oWordApplic.Documents.Add(strName, missing, missing, isVisible) oDocument.Activate() ChangeNormalView() '切换普通视图 Catch ex As Exception Log(ex.Message, ex.StackTrace) Log("报告路径 : ", FileName) End Try End Sub ''' <summary> ''' 打开已有文档 ''' </summary> ''' <remarks></remarks> ''' <param name="FileName">传入一个word的路径</param> Public Sub OpenFile(ByVal FileName As String) Dim strName As String Dim isReadOnly As Boolean Dim isVisible As Boolean Dim missing = System.Reflection.Missing.Value strName = FileName isReadOnly = False isVisible = True oWordApplic = New Microsoft.Office.Interop.Word.Application oDocument = oWordApplic.Documents.Open(strName, missing, isReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing) oDocument.Activate() End Sub ''' <summary> ''' 退出Word ''' </summary> ''' <remarks></remarks> Public Sub Quit() Dim missing = System.Reflection.Missing.Value oWordApplic.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordApplic) oWordApplic = Nothing End Sub ''' <summary> ''' 关闭所有打开的文档 ''' </summary> ''' <remarks></remarks> Public Sub CloseAllDocuments() oWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges) End Sub ''' <summary> ''' 保存当前文档 ''' </summary> ''' <remarks></remarks> Public Sub Save() Try oDocument.Save() Catch Log("", Err.Description, "") End Try End Sub ''' <summary> ''' 插入图片 ''' </summary> ''' <remarks></remarks> ''' <param name="FileName" >图片的路径</param> Public Sub InsertPic(ByVal FileName As String) Try Dim missing = System.Reflection.Missing.Value oWordApplic.Selection.InlineShapes.AddPicture(FileName, False, True, missing) Catch ex As Exception InsertTextRed("没有找到这张图片") End Try End Sub ''' <summary> ''' 插入图片并且设置图片的高度 ''' </summary> ''' <param name="FileName">图片的路径</param> ''' <param name="height">图片高度(传283.45就等于10cm)</param> ''' <remarks></remarks> Public Sub InsertPicSetHeight(ByVal FileName As String, ByVal height As Single) Try Dim missing = System.Reflection.Missing.Value '选中 Dim startpos = oWordApplic.Selection.Start '光标下移 oWordApplic.Selection.InlineShapes.AddPicture(FileName, False, True, missing) '选中 oWordApplic.Selection.Start = startpos oWordApplic.Selection.InlineShapes(1).Height = height Catch ex As Exception InsertTextRed("没有找到这张图片") End Try End Sub ''' <summary> ''' 插入文本 ''' </summary> ''' <remarks></remarks> ''' <param name="text">传入文本</param> Public Sub InsertText(ByVal text As String) oWordApplic.Selection.TypeText(text) End Sub '转到书签 ''' <summary> ''' 转到书签 ''' </summary> ''' <remarks></remarks> ''' <param name="strBookMark">书签的名字</param> Public Sub GotoBookMark(ByVal strBookMark As String) Try Dim missing = System.Reflection.Missing.Value Dim BookMark = CInt(Word.WdGoToItem.wdGoToBookmark) oWordApplic.Selection.GoTo(BookMark, missing, missing, strBookMark) Catch ex As Exception Log(strBookMark, ex.Message, "") End Try End Sub
(五) 运行效果
- 运行图
- 简历图
(六) 下载
下载源码:http://download.csdn.net/download/nihaohhyy/9982925
下载运行程序:http://download.csdn.net/download/nihaohhyy/9982919
阅读全文
0 0
- c# .net 操作word
- .net操作word
- 用.net操作word
- 用.net操作word
- 用.net操作word
- 用.net操作word
- asp.net操作word
- asp.net Word 操作
- 用.net操作word
- 用.net操作word
- 用.net操作word
- 用.net操作word
- VB.NET操作WORD
- asp.net操作word
- .NET 操作WORD
- VB.NET操作WORD
- .net中操作WORD
- .net中操作word
- 其他常用标记
- syntax error near unexpected token `local'
- 练习5: 输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- ggplot2--绘图基础
- selenium知识点小结
- .Net 操作Word
- Oracle函数(常见的20种)+三层嵌套分页...等多种Oracle的sql(常用)
- 创业五年感受
- javascript字符串string常用的几种方法(indexOf/lastIndexOf/search/charAt/match/slice/substr/replace/concat/split
- 《浅谈如何坚持》鸡汤阅后笔记
- leetcode---climbing-stairs---dp
- cookie和javaBean
- java集合
- 关于我为什么要写博客