[转]C#操作word模板插入文字、图片及表格详细步骤

c#操作word模板插入文字、图片及表格

1.建立word模板文件 person.dot
用书签 标示相关字段的填充位置

2.建立web应用程序 加入Microsoft.Office.Interop.Word引用
具体添加引用请参看
http://www.microsoft.com/china/msdn/library/office/office/OfficePrIntopAssFAQ.mspx?mfr=true

3.相关示例代码

protected void CreateReport_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application appWord = null;//应用程序
            Microsoft.Office.Interop.Word.DocumentClass doc = null;//文档
            try
            {
                appWord = new Microsoft.Office.Interop.Word.Application();
                appWord.Visible = false;
                object objTrue = true;
                object objFalse = false;
                object objTemplate = Server.MapPath("person.dot");//模板路径
                object objDocType = WdDocumentType.wdTypeDocument;
                doc = (DocumentClass)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType,ref objTrue);
                //第一步生成word文档
                //定义书签变量
                object obDD_Name = "bm_Name";//姓 名
                object obDD_Sex = "bm_Sex";//性 别
                object obDD_Birthday = "bm_Birthday"; //出生年月
                object obpic="pic";
                object obtable = "obtable";
                object Nothing = System.Reflection.Missing.Value;
                //InlineShape shape = appWord.Selection.InlineShapes.AddPicture(@"F:\Picture\_DSC1602.JPG", ref Nothing, ref Nothing, ref Nothing);
                //第二步 读取数据,填充数据集
                System.Data.DataTable dt = new DataTable();
                dt.Columns.Add("p_Name");
                dt.Columns.Add("p_Sex");
                dt.Columns.Add("p_Birthday");
                DataRow dr = dt.NewRow();
                dr["p_Name"] = "张三";
                dr["p_Sex"] = "男";
                dr["p_Birthday"] = "1980-01-01";
                dt.Rows.Add(dr);

                //第三步 给书签赋值
                //给书签赋值
                doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = dt.Rows[0]["p_Name"].ToString(); //姓 名
                doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = dt.Rows[0]["p_Sex"].ToString();//性 别
                doc.Bookmarks.get_Item(ref obDD_Birthday).Range.Text = dt.Rows[0]["p_Birthday"].ToString();//年龄
                doc.Bookmarks.get_Item(ref obpic).Range.InlineShapes.AddPicture(@"F:\Picture\_DSC1602.JPG", ref Nothing, ref Nothing, ref Nothing);

                //文档中插入表格
                //doc.Bookmarks.get_Item(ref obtable).Range.Tables.Add(doc.Bookmarks.get_Item(ref obtable).Range, 12, 3, ref Nothing, ref Nothing);
                Microsoft.Office.Interop.Word.Table newTable = doc.Tables.Add(doc.Bookmarks.get_Item(ref obtable).Range, 12, 3, ref Nothing, ref Nothing);
                newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
                //给文档的最后一行再添加内容
                doc.Paragraphs.Last.Range.Text = "";

                //第四步 生成word
                object filename = Server.MapPath("~") + "\\BG\\" + dt.Rows[0]["p_Name"].ToString() + ".doc";
                object miss = System.Reflection.Missing.Value;
                doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
                object missingValue = Type.Missing;
                object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
                doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
                appWord.Application.Quit(ref miss, ref miss, ref miss);
                doc = null;
                appWord = null;

            }
            catch (System.Exception ex)
            {
                //捕捉异常,如果出现异常则清空实例,退出word,同时释放资源
                string aa = ex.ToString();
                object miss = System.Reflection.Missing.Value;
                object missingValue = Type.Missing;
                object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
                doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
                appWord.Application.Quit(ref miss, ref miss, ref miss);
                doc = null;
                appWord = null;
            }
        }

-----
以上代码在运行时 如遭遇80070005错误

解决方法一:
控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Word文档
之后
单击属性打开此应用程序的属性对话框。 
2. 单击标识选项卡,然后选择交互式用户。 
3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后
自定义->编辑->添加ASP.NET账户和IUSER_计算机名
4. 确保允许每个用户访问,然后单击确定。 
5. 单击确定关闭 DCOMCNFG。

解决方法二:
如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:
在web.config中使用身份模拟,在<system.web>节中加入 <identity impersonate="true" userName="你的用户名

" password="密码"/>
</system.web>

参考文档:http://wenku.baidu.com/view/fc8aa56fb84ae45c3b358c98.html

附:图片的详细操作

object filename = @"C:\Inetpub\wwwroot\TestWebApp\test.doc";//文件名 
Word.Application a = new Word.ApplicationClass();//建立一个Word程序对像 
object Nothing = System.Reflection.Missing.Value;//空值 
Word.Document b = a.Documents.Open(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);//建立一个Word文档对像

//其实这步就是执行了这个宏 
InlineShape shape = a.Selection.InlineShapes.AddPicture(@"C:\Documents and Settings\Administrator\桌面\2003121512223366481.jpg",ref Nothing,ref Nothing,ref Nothing);

shape.Height = InchesToPoints(0.5) 
shape.Width = InchesToPoints(0.5)

//Selection.InlineShapes.AddPicture FileName:= "C:\Documents and Settings\Administrator\桌面\2003121512223366481.bmp", LinkToFile:=False, SaveWithDocument:=True End Sub b.Save();//保存 
b.Close(ref Nothing,ref Nothing,ref Nothing);//关闭Word文档 
a.Quit(ref Nothing,ref Nothing,ref Nothing);//退出Word程序

c# 向word中指定的书签写数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//using System.Web.UI.HTMLControls;
//using Microsoft.office;
using Microsoft.Office.Core;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Word;

namespace common
{
    public class WriteInWord
    {

        ApplicationClass app = null;//定义应用程序对象
        Document doc = null;        //定义word文档对象
        Object missing = System.Reflection.Missing.Value;//定义空变量         Object isReadOnly = false;
        public  void OpenDocument(string parFilePath)
        {

            object filePath = parFilePath;//文档路径  

            app = new ApplicationClass();

            //打开文档  

            doc = app.Documents.Open(ref filePath, ref missing, ref missing, ref missing, ref missing,

                       ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,

                       ref missing, ref missing, ref missing, ref missing);

            doc.Activate();//激活文档  

        }

        /// <summary>  

        /// 向word文档写入数据  

        /// </summary>  

        /// <param name="parLableName">域标签</param>  

        /// <param name="parFillName">写入域中的内容</param>  

        public  void WriteIntoDocument(string parLableName, string parFillName)
        {

            object lableName = parLableName;

            Bookmark bm = doc.Bookmarks.get_Item(ref lableName);//返回标签  

            bm.Range.Text = parFillName;//设置域标签的内容  

        }
        /// <summary>  

        /// 保存并关闭  

        /// </summary>  

        /// <param name="parSaveDocPath">文档另存为的路径</param>  

        public  void SaveAndClose(string parSaveDocPath)
        {

            object savePath = parSaveDocPath;//文档另存为的路径  

            Object saveChanges = app.Options.BackgroundSave;//关闭doc文档不提示保存  

            //文档另存为  

            doc.SaveAs(ref savePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,

                            ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

            doc.Close(ref saveChanges, ref missing, ref missing);//关闭文档  

            app.Quit(ref missing, ref missing, ref missing);     //关闭应用程序  

        }

    }

---------------------
作者:hy31337
来源:CNBLOGS
原文:https://www.cnblogs.com/elves/p/3624115.html
版权声明:本文为作者原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/admans/p/11308126.html

时间: 2024-11-08 10:28:15

[转]C#操作word模板插入文字、图片及表格详细步骤的相关文章

Csharp 简单操作Word模板文件

原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档  Doc1.dot 内容为: To: <Name> Sub:<Subject> Website is ok geovindu 涂聚文好样的 work. CEo <Datetime> Thanks. 2.程序操作代码为: /// <summary> /// 簡單操作Word模板文件 /// 塗聚文 2011-11-03 /// 缔友计算机信息技术有限公司 /// </summa

Qt 向word中插入文字(使用QAxWidget和QAxObject)

pro 文件中要加入 CONFIG += qaxcontainer 2. main.cpp [cpp] view plain copy #include <QApplication> #include <QAxWidget> #include <QAxObject> int main(int argc, char* argv[]) { QApplication app(argc, argv); QAxWidget *word=new QAxWidget("Wo

html 富文本编辑器相关--向编辑器内部插入文字图片等各种dom元素 通用方法

有问题的插入方案 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style>#edit{height:500px;width:500px;border:1px solid red;}</style> </head> <body> <

C#操作Word的超详细总结

本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表格,格式化表格,往表格中插入数据: 保存Word,打印Word: 重新打开Word等. Visual studio版本:Visual Studio 2012(2010应该也可以) 准备工作: /* 1. 添加引用COM里面的 Microsoft Word 12.0

C#来操作Word

创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表格,格式化表格,往表格中插入数据: 保存Word,打印Word: 重新打开Word等. /* 1. 添加引用COM里面的 Microsoft Word 12.0 Object. Library 引用(12.0表示Word 2007版本) 2. 导命名空间 using MSWord =Microsof

C# 替换Word文本—— 用文档、图片、表格替换文本

编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改.在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文档.图片或者表格来替换文档中的指定文本字符串.示例要点如下: 1. 用文档替换Word中的文本 2. 用图片替换Word中的文本 3. 用表格替换Word中的文本 工具 Free Spire.Doc for .NET 下载安装后,注意在程序中添加引用Spire.Doc.dll(如下图),dll文件可

如何给pdf插入文字

相信有许多朋友都不太了解pdf这一文本格式,甚至有不少的朋友都没有听说过pdf文件,但pdf文件因为其优秀的显示效果而被越来越多的公司所使用.所以今天小编想给大家介绍一下什么是pdf以及如何给pdf插入文字.操作软件:PDF编辑软件软件地址:http://www.onlinedown.net/soft/1174945.htmPdf是什么:Pdf是一种便携式文档格式,有Adobe公司研发,因为全称Portable Document Format.无论是用什么样的硬件.操作系统和应用程序将pdf文件

C# 操作Word文本框——插入图片、表格、文字、超链接等

概述 Text Box(文本框)是Word排版的工具之一.在Word文档中的任何地方插入文本框,可添加补充信息,放在合适的位置,也不会影响正文的连续性.我们可以设置文本框的大小,线型,内部边距,背景填充等效果.文本框内可以图文混排,设置字体,字号,图片大小.文字链接,绘入表格等.在下面的示例中,将分为两部分来介绍在Word中插入文本框,分别是:第一部分:插入图文混排的文本框,包含图片填充,内部边距,图文混排.文字超链接等元素第二部分:关于在文本框中插入表格.读取表格.删除表格等操作 使用工具 *

c# 操作word中在右下角插入图片

需求:需要对现有文档在右下角插入图片 /// <summary> /// 将图片插入到word中 /// </summary> /// <param name="wordPath">被操作的源word文档</param> /// <param name="picturePath">要插入的图片地址</param> /// <param name="toWordPath"