使用aspose.word 生成分栏的表格

作者: 分类: 技术文章 时间: 2014-07-24

在word中以表格形式展示学生数据,由于所要展示的学生信息不多,且学生人数较多,一般会在word中使用分栏展示。现在就需要使用c#+aspose.word来生成分栏的表格了。

一、制作word模板

首先用word软件新建一个文件,主要设置页面分栏和页眉。打开word,在“页面布局”选项卡里,设置“分栏”功能为2栏。

然后设置页眉,在页眉处设置字体大小,以及插入一个书签BookMark,书签命名为“Title”,稍后可以通过置换书签的方法设置页面的标题。

接着是测算表格中的单元格的大小,以及一个word页面可以放置多少行数据。

二、写代码

通过第一步对模板设置了页眉书签,页面布局设置为分栏2栏,及知道了每个页面可以容纳多少行数据后,就可以开始写代码了。

基本原理就是在word中写入2个表格,表格的行数已经测算,然后在2个表格中间插入分栏符号,最后在第二个表格后面插入分页符号。

阅读全文»

webrequest的timeout属性作用范围

作者: 分类: 技术文章 时间: 2014-07-13

使用c#进行抓取网页信息时,使用httpwebrequest进行抓取,通常都会自定义设置一个timeout超时值,如果不设置的话,系统默认的超时值比较高,往往长时间的等待没有意义,不如手动设置一个比较小的值,例如5秒,这样5秒内如若还连不上,则可以考虑重新建立连接或者做其他事情。

不过使用中发现一个奇怪的现象,就是对一个页面的抓取,已经超过了设置的timeout值了,既没有抛出异常也没有完成数据抓取,仍需要等待非常长的时间后才报告一个错误。仔细查看了关于 HttpWebRequest.Timeout 的解释:

Timeout 是进行后续同步请求时使用 GetResponse 方法等待响应以及 GetRequestStream 方法等待流所允许的毫秒数。 Timeout 适用于整个请求和响应,不单独对 GetRequestStream 与 GetResponse 方法调用响应。 如果资源在超时期限内未返回,请求将引发 WebException,并将 Status 属性设置为 WebExceptionStatus.Timeout。 Timeout 属性必须在 GetRequestStream 或 GetResponse 方法被调用之前设置。 在调用 GetRequestStream 或 GetResponse 方法之后更改 Timeout 属性不起任何作用 Timeout 属性对使用 BeginGetResponse 或 BeginGetRequestStream 方法生成的异步请求无效。
觉得timeout的作用域是控制与目标服务器建立连接的超时时间,也就是说,当我们和服务器能在规定的timeout时间内建立tcp连接,便不会异常,而后,页面数据的下载很慢的过程不在timeout的范围内。这就导致了该下载过程漫长而无果。为了验证这个猜想,我做了几个页面,分别在里面设置System.Threading.Thread.Sleep(n)方法来人为延时。

阅读全文»