使用点聚 weboffice 以及vsto、 web service 实现word 的自动化文档处理
开发环境的搭建:
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 的自动化文档处理的更多相关文章
- 微软office web apps 服务器搭建之在线文档预览
案例:http://owa.linbsoft.com/op/generate.aspx# 文档地址:http://demo.linbsoft.com/CourseFile/201407/2014070 ...
- ASP.NET Web API编程——构建api帮助文档
1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目 ...
- ASP.NET Web API从注释生成帮助文档
默认情况下,ASP.NET Web API不从Controller的注释中生成帮助文档.如果要将注释作为Web API帮助文档的一部分,比如在帮助文档的Description栏目中显示方法注释中的su ...
- 微软office web apps 服务器搭建之在线文档预览(一)
office web apps安装 系统要求为Windows Server 2012, 注意:转换文档需要两台服务器,一台为转换server,另外一台为域控server.(至于为什么要两台,这个请自行 ...
- 微软office web apps 服务器搭建之在线文档预览(二)
上一篇文章已经介绍了整个安装过程了.只要在浏览器中输入文档转换server的ip,会自动跳转,出现如下页面. 那么就可以实现本地文档预览了,你可以试试.(注意:是本地哦,路径不要写错,类似“\\fil ...
- Web Api使用Swagger提供在线文档
1.添加Swashbuckle引用 2.生成XML文件 3.添加XML解析,在接口添加注释信息 4.运行项目输入地址 http://localhost:58254/swagger
- DoNetCore Web Api 采用Swagger进行接口文档管理
第一步:创建API项目 步骤这里不说明 第二步:就是Nuget 包, 两种方式:1.工具->Nuget管理->程序包管理控制台 Install-Package Swashbuckle.As ...
- Web Service学习小结(概念性回忆)-希望你们会喜欢
Web Service的出现带来了很多系统工程直接相互的调用.无疑让代码的隐藏得到了好的封装. Web Service 它的主要的组成要素: SOAP:(Simple Object Access P ...
- 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...
随机推荐
- 3-18 关于namespace,双冒号::的用法; SelfYield.
关于namespace,双冒号::的用法. 防止引用多个模块在一个文件/类中,有重名的对象.::可以调用类的类方法,和常量. class Foo BAR = "hello" ...
- [HEOI2012]采花
第一眼以为是树套树qwq 然而n,m<=1e6 记上一个与i颜色相同的位置为nxt[i] 考虑i和nxt[i]会对那些询问产生贡献. 发现当右端点R>=i时, 左端点只要满足nxt[nxt ...
- 基础最短路(模板 bellman_ford)
Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店 ...
- 安装docker CE for CentOS
Uninstall old versions sudo yum remove docker \ docker-client \ dock ...
- PHP:php中的双引号和单引号的区别
双引号: $a="369"; $b="$a"; echo $b;//输出:369 单引号: $a="369"; $b='$a'; echo ...
- HDU 1940
//比赛的时候卡了三个点.今天卡了两个点.真心不愿意再看了. // 自己按照直线相交的思路的敲得.题意里说了不是按照final rank 给的.但是.这样就和标程输出不同. //就是觉得AC突然就不那 ...
- Python Django 前后端数据交互 之 前端向后端发送数据
Python Django 之 前端向后端发送数据
- pymssql
用与连接sql server数据库的python接口 import pymssql 1.配置信息 conf={ "host": "118.190.41.846:9099& ...
- js 常用事件
onclick 事件会在对象被点击时发生. 请注意, onclick 与 onmousedown 不同.单击事件是在同一元素上发生了鼠标按下事件之后又发生了鼠标放开事件时才发生的. 如:点击验证码时进 ...
- jsp 中实现点击按钮 实现页面跳转到HTML
<input type ="button" value="跳转" onclick="window.location.href='main.htm ...