开发环境的搭建:

1.visual studio 2010

2. 点聚web office

开发步骤

1. 创建word vsto 项目

比较简单

1. 添加任务窗格

页面如下:

代码如下:

1. 使用web service 获取数据

因为开发测试返回的数据时xml 所以进行了datatable的转换

partial class ActionsPaneControl1 : UserControl
    {
        DataTable dt = new DataTable();
        DataTable dm = new DataTable();
        ufsea.SEAOrganizationService service = new ufsea.SEAOrganizationService();
        public ActionsPaneControl1()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            dt = CusdbCommon.XMLHelper.XmlDeserializeUnicode(service.GetCorporationListOfGuFen());
            dataGridView1.DataSource = dt;

}

private void button2_Click(object sender, EventArgs e)
        {
            Globals.ThisDocument.bookmark1.Text = "this is a dmeo";
            Globals.ThisDocument.bookmark2.Text = "first app";

}

private void button3_Click(object sender, EventArgs e)
        {
            Globals.ThisDocument.bookmark2.Text = textBox3.Text;
        }

private void button4_Click(object sender, EventArgs e)
        {
            dm = dt.Clone();
            foreach (DataRow item in dt.Select("CorpName like '" + textBox2.Text + "%'"))
            {
             
                dm.ImportRow(item);
             
            }
            dataGridView1.DataSource = dm;
        }
       
        private void button5_Click(object sender, EventArgs e)
        {
            DataGridViewSelectedRowCollection selectlist=dataGridView1.SelectedRows;
            foreach (DataGridViewRow item in selectlist)
            {
                int rowcount = Globals.ThisDocument.Tables[1].Rows.Count;
                int colcount = Globals.ThisDocument.Tables[1].Columns.Count;
                 Microsoft.Office.Interop.Word.Table tbl= Globals.ThisDocument.Tables[1];
                 tbl.Rows.Add();                 int rowcount1 = Globals.ThisDocument.Tables[1].Rows.Count;
                int colcount1 = Globals.ThisDocument.Tables[1].Columns.Count;
                tbl.Cell(rowcount1, 1).Range.Text = item.Cells[1].Value.ToString();
                tbl.Cell(rowcount1, 2).Range.Text = item.Cells[2].Value.ToString();
                tbl.Cell(rowcount1, 3).Range.Text = item.Cells[3].Value.ToString(); 
            }
        }
    }

数据转换的xmlhelper 如下:

public class XMLHelper
    {
        public XMLHelper()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

public static string XMLError(string title)
        {
            return "<Customer><error>" + title + "</error></Customer>";
        }
        public static string XMLSucess(string title)
        {
            return "<Customer><success>" + title + "</success></Customer>";
        }
        public static string XMLRet(string title)
        {
            return "<ret>" + title + "</ret>";
        }
        public static string XMLHeader
        {
            get
            {
                return "<Customer>";
            }
        }
        public static string XMLFooter
        {
            get
            {
                return "</Customer>";
            }
        }

public static string getvalue(string str, string reg)
        {
            string regexString = @"<" + reg + ">([\\w\\W]*?)</" + reg + ">";
            string val = "";
            string[] getUrls = getElements(str, regexString, "$1");
            if (getUrls.Length != 0)
            {
                val = getUrls[0];
            }
            return val;
        }

private static string[] getElements(string m_bookHTML, string strRegexString, string strReplaceText)
        {
            string[] ArrBlock = HtmlRegexURL(strRegexString, strReplaceText, m_bookHTML);
            return ArrBlock;
        }

private static string[] HtmlRegexURL(string strRegexString, string replaceText, string strNeedDoHtml)
        {
            string[] returnarray;
            if (strNeedDoHtml == null)
            {
                returnarray = null;
            }
            else
            {
                Regex matchsRegex = new Regex(strRegexString, RegexOptions.None);
                int[] m_num = matchsRegex.GetGroupNumbers();
                MatchCollection matchsFound;
                matchsFound = matchsRegex.Matches(strNeedDoHtml);
                int returnnum = matchsFound.Count;
                returnarray = new string[returnnum];
                int i = 0;
                foreach (Match matchMade in matchsFound)
                {
                    if (replaceText.Length > 0)
                    {
                        returnarray[i] = matchMade.Result(replaceText);
                    }
                    else
                    {
                        returnarray[i] = matchMade.Value;
                    }
                    i++;
                }
            }
            return returnarray;
        }

#region 对象的序列化和反序列化(Xml格式) XmlSerialize/XmlDeserialize
        /*
            例子:
            String ReturnValue=XMLHelper.XmlSerialize(arrExample,typeof([ClassName]))
         */
        public static string XmlSerialize(object obj, params Type[] extra)
        {
            XmlSerializer ser = new XmlSerializer(obj.GetType(), extra);
            System.IO.MemoryStream mem = new MemoryStream();
            XmlTextWriter writer = new XmlTextWriter(mem, System.Text.Encoding.Default);
            ser.Serialize(writer, obj);
            string strtmp = Encoding.Default.GetString(mem.ToArray());
            return strtmp;
        }

/*
            例子:
            ArrayList arrExample = (ArrayList)XMLHelper.XmlDeserialize(value, typeof(ArrayList), typeof([ClassName]));
         */
        public static object XmlDeserialize(string xml, Type type,params Type[] extra)
        {
            XmlSerializer serializer = new XmlSerializer(type,extra);
            System.IO.MemoryStream mem = new MemoryStream(Encoding.Default.GetBytes(xml));
            return serializer.Deserialize(mem);
        }

public static string XmlSerialize(DataTable dt, string tableName)
        {
            dt.TableName = tableName;
            System.Text.StringBuilder strbuilder = new System.Text.StringBuilder();
            StringWriter writer = new StringWriter(strbuilder);
            dt.WriteXml(writer, System.Data.XmlWriteMode.IgnoreSchema);
            return strbuilder.ToString();
        }

public static DataTable XmlDeserialize(string xml)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            MemoryStream mem = new MemoryStream(Encoding.Default.GetBytes(xml));
            ds.ReadXml(mem);
            if (ds.Tables.Count > 0)
                dt = ds.Tables[0];
            return dt;
        }
        public static DataTable XmlDeserializeUnicode(string xml)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            MemoryStream mem = new MemoryStream(Encoding.UTF8.GetBytes(xml));
            ds.ReadXml(mem);
            if (ds.Tables.Count > 0)
                dt = ds.Tables[0];
            return dt;
        }
        #endregion
    }

2. word 页面的表格显示

页面如下:

3. 使用word 进行的测试

加载数据页面:

动态添加表格数据页面

4. 使用点聚web office 进行显示操作

点聚web office的使用大家百度一下就知道了。

我只贴出代码意识使用的方式:

使用WebOffice常用接口调用 文件夹中的例子即可

实际进行部署的时候我们一般选择使用安装包,我只是为了进行测试,这种方式在实际的环境中运行是有问题的

使用IE 进行测试的页面:与上面的类似。

使用点聚 weboffice 以及vsto、 web service 实现word 的自动化文档处理的更多相关文章

  1. 微软office web apps 服务器搭建之在线文档预览

    案例:http://owa.linbsoft.com/op/generate.aspx# 文档地址:http://demo.linbsoft.com/CourseFile/201407/2014070 ...

  2. ASP.NET Web API编程——构建api帮助文档

    1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目 ...

  3. ASP.NET Web API从注释生成帮助文档

    默认情况下,ASP.NET Web API不从Controller的注释中生成帮助文档.如果要将注释作为Web API帮助文档的一部分,比如在帮助文档的Description栏目中显示方法注释中的su ...

  4. 微软office web apps 服务器搭建之在线文档预览(一)

    office web apps安装 系统要求为Windows Server 2012, 注意:转换文档需要两台服务器,一台为转换server,另外一台为域控server.(至于为什么要两台,这个请自行 ...

  5. 微软office web apps 服务器搭建之在线文档预览(二)

    上一篇文章已经介绍了整个安装过程了.只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面. 那么就可以实现本地文档预览了,你可以试试.(注意:是本地哦,路径不要写错,类似“\\fil ...

  6. Web Api使用Swagger提供在线文档

    1.添加Swashbuckle引用 2.生成XML文件 3.添加XML解析,在接口添加注释信息 4.运行项目输入地址   http://localhost:58254/swagger

  7. DoNetCore Web Api 采用Swagger进行接口文档管理

    第一步:创建API项目 步骤这里不说明 第二步:就是Nuget 包, 两种方式:1.工具->Nuget管理->程序包管理控制台 Install-Package Swashbuckle.As ...

  8. Web Service学习小结(概念性回忆)-希望你们会喜欢

    Web Service的出现带来了很多系统工程直接相互的调用.无疑让代码的隐藏得到了好的封装. Web  Service 它的主要的组成要素: SOAP:(Simple Object Access P ...

  9. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

随机推荐

  1. php--------删除一个路径下的所有文件夹和文件

    php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用. 也适合在thinkphp中清理缓存,在thinkphp中 ...

  2. 介绍 Jersey 依赖

    Jersey 使用 Apache Maven 进行构造和安装.非快照(Non-snapshot)Jersey 发行版本是不会部署到 中心 Maven 仓库(Central Maven Reposito ...

  3. 莫比乌斯反演学习笔记(转载自An_Account大佬)

    转载自An_Account大佬 提示:别用莫比乌斯反演公式,会炸的 只需要记住: [gcd(i,j)=1]=∑d∣gcd(i,j)μ(d)[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\ ...

  4. 2-18,19 搭建MySQL主从服务器并并通过mysql-proxy实现读写分离

    MySQL主从服务器 实现方式: MySQL  REPLICATION Replication可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave) 默认情况下这种 ...

  5. HDU-5001 Walk (概率DP)

    Problem Description I used to think I could be anything, but now I know that I couldn't do anything. ...

  6. @XmlAccessorType @XmlType 详解

    例子: @XmlAccessorType(XmlAccessType.FIELD) String name=”CY”; } public static void main(String[] args) ...

  7. AIX的iostat命令解析(翻译红皮书)

    1.确定磁盘使用率 $ iostat -T 2 10System configuration: lcpu=8 drives=29 paths=52 vdisks=0tty:      tin      ...

  8. Excel中输入身份证后3位变成0,怎么办?

    1.问题介绍: 1)问题: 在使用excel输入身份证号时,会发现直接输入数字后最后面的三位数字都变成0了,这可怎么办呢?

  9. jsp jsp_javabean

    javaBean的定义 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露 ...

  10. git忽略操作

    在使用git的过程中,我们会有一些文件是不需要版本管理的,这时候就需要忽略这些文件 这里暂时只讲我用到的办法 全局忽略 在任意位置建立 .gitignore 文件,在其中写入你要忽略文件的规则(写法自 ...