摘要: NPOI组件强大高效,这里只使用它完成我们的Excel写入功能,需要更多内容则请自行搜索。IWorkbook:工作簿对象,可以由NPOI.HSSF.UserModel.HSSFWorkbook实例化得来,Write(Stream stream)如其意;ISheet:工作表对象,可以由IWorkbook实例的CreateSheet()方法创建;IRow:行对象,可以由ISheet实例的Create()方法创建;ICell:单元格对象,可以由IRow实例的CreateCell()方法创建。先处理翻页问题,10版Excel最多支持1048576行,03版Excel最多支持65536行。只处理03版E 阅读全文
posted @ 2013-05-16 16:32 Jusfr 阅读(1735) 评论(3) 推荐(0) 编辑
摘要: 导出操作中,我们常常不需要显示所有属性,比如Person类加入Guid属性:public class Person{ public Int32 ID { get; set; } public Guid Guid { get; set; } public String Name { get; set; } public DateTime Birth { get; set; } public Double Salary { get; set; }}现在要求传入字符串数组headers,有什么显示什么,Type. GetProperty()方法可以取单个属性,我们加入E... 阅读全文
posted @ 2013-05-16 16:30 Jusfr 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 对数据进行导出要求很常见,我们需要通用便离不了泛型和反射。这里从伪码开始,逐步加入业务需求、场景及边界,最终使用NPOI组件实现。准备好业务中的实体类准备好:public class Person{ public Int32 ID { get; set; } public String Name { get; set; } public DateTime Birth { get; set; } public Double Salary { get; set; }}接着是函数原型:Export(IList records)接下来我们开始干活。首先是PropertyInfo... 阅读全文
posted @ 2013-05-16 16:29 Jusfr 阅读(762) 评论(0) 推荐(0) 编辑
摘要: HttpContent提供了ReadAsFormDataAsync()方法,实际开发中的拦截器、等常常产生重置Request流的需求,自定义解析方法如下,测试效率还算不错,字符串分切比原生读取快,自定义方法是线性时间算法,进一步提高的了效率。 public static NameValueCollection FormResolveCustom(String reqStr){ NameValueCollection form = new NameValueCollection(8); Char[] split = { '=' }; String[] forms = reqSt. 阅读全文
posted @ 2013-03-08 17:05 Jusfr 阅读(832) 评论(0) 推荐(0) 编辑
摘要: 假定需要按顺序处理一系统工作,它们可能消耗较多时间,GUI线程期望获取每件工作的结果并予显示,同时处理掉异常而不是中断整体工作,比如使用同一个Http接口以上传文件,并发访问将会报错。常规做法是使用一个后台线程,线程遍历工作集合,并把结果POST到主线程,逻辑如下:AsyncOperation asyncOperation = null;private void button1_Click(object sender, EventArgs e) { asyncOperation = AsyncOperationManager.CreateOperation(null); Thread th.. 阅读全文
posted @ 2012-08-14 15:57 Jusfr 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 如以下代码所示,方法内有整型变量k,声明泛型委托hanlder并在内部对k进行自增操作,打印k得到101。static void Main(string[] args){ int k = 100; Action handler = () => k++; handler(); Console.WriteLine(k);}WinForm中的TreeView常常要解决类似“父节点与子节点勾选”问题,注册TreeView.AfterCheck事件并添加递归方法很容易实现,现在添加需求,要求计算所有勾选状态TreeView的子节点;再添加需求,现在有第三方TreeView能实现类... 阅读全文
posted @ 2012-06-19 17:23 Jusfr 阅读(570) 评论(0) 推荐(0) 编辑
摘要: Demo115使用Task.StartNew(...访问服务...).ContinueWith(...更新控件...)模式处理耗时查询并绑定结果再合适不过,但查询时间的不确定性使得需要做更多工作控制结果取舍以正确更新控件。比如说一张分月的报表窗体,用户可以使用形如“下个月”的按钮进行查询。现在是1月,用户快速点击“下个月”两次,可能3月份的数据少,查询结果迅速返回并反映在窗体上,但2月份的数据慢悠悠返回时,延续任务将同样更新控件,控件 最终展示2月份数据,而我们已经不感兴趣。对其处理同样十分简单,可以考虑限制查询频率,如一次查询未完成时禁用下一次查询,另外的解决方法是只执行最后一个任务的延续任 阅读全文
posted @ 2012-06-06 18:02 Jusfr 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 创建一个本身抛出异常、子任务抛出异常、子任务的子任务抛出异常的Task。Task pt = new Task(() =>{ Task.Factory .StartNew(() => { throw new Exception("ex 1"); }, TaskCreationOptions.AttachedToParent); Task.Factory .StartNew(() => { Task.Factory .StartNew(() =... 阅读全文
posted @ 2012-05-29 13:02 Jusfr 阅读(1800) 评论(0) 推荐(0) 编辑
摘要: Demo源文件115实现虚拟服务类,提供数据using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace PagingDemo { public class VitrualModel { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } } public class VitrulMode... 阅读全文
posted @ 2012-04-27 11:32 Jusfr 阅读(647) 评论(3) 推荐(0) 编辑