C#学习笔记.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C#学习笔记.pdf》由会员分享,可在线阅读,更多相关《C#学习笔记.pdf(123页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、c#学习日记李新勇2014年 2 月20日目录01.datasource 导出 Excel 的类.102.C_基于Socket的CS模式的完整例子.603.C#操作 excel.110 4.访问数据库向控件中添加值的步骤及相关代码.4305.NETC#)连接各类数据库-集锦.4906.OFFICE项 目报表.540 7.连接SQLExpress版数据库.6008.C#与 EXCEL的数据交互.630 9.如何巧妙运用WinCC V6.0 VBS脚本实现对SQL Server数据库的存储与查寻.6910.WinCC V6.0 V BS脚本在自动汽车.751 1.利用 GemBox.ExcelLi
2、te.dll 脱离 Excel 环境,把 DataGridView 数据导出到 Excel 文件.8012.GemBoxl.ExcelLite 使用说明.821 3.不需要安装office excel,导出Grid View所有数据为Excel.9014.C+学习笔记.9415.C#(.n e t)中的 D川 mport.9716.C#:循环冗余校验 CRC-16-CCITT 和 CRC-32-IEEE 802.3.10117.C#中数据库数据如何导出至Excel表格.1081 8.备用.12201.datasource 导出 Excel 的类using System;using System
3、.10;using System.Data;using System.Web;using System.Web.UI;using System.Web.ULWebControls;using System.Text;using System.Globalization;using System.Collections;namespace DRN.ULFrameworkpublic class ExcelHelper#region Fieldsstring _fileName;DataTable _dataSource;string _titles=null;string _fields=nul
4、l;int _maxRecords=1000;#endregion#region Properties/限制输出到Excel的最大记录数。超出则抛出异常III public int MaxRecords set _maxRecords=value;get return _maxRecords;)/I I I输出到浏览器的Excel文件名/public string FileName set _fileName=value;get return _fileName;#endregion#region构造函数/构造函数/param name:titles”)要输出到 Excel 的列标题的数组/要
5、输出到 Excel 的字段名称数组III 数据源public ExcelHelper(string titles,string fields,DataTable dataSource):this(titles,dataSource)if(fields=null 1 1 fields.Length=0)throw new ArgumentNullException(nfields);if(titles.Length!=fields.Length)throw new ArgumentExceptionftitles.Length!=fields.Length,fields);_fields=fie
6、lds;)III III构造函数/param name=titles”,要输出至ij Excel 的列标题的数组/数据源public ExcelHelper(string titles,DataTable dataSource):this(dataSource)if(titles=null 11 titles.Length=0)throw new ArgumentNullException(titlesH);/if(titles.Length!=dataSource.Columns.Count)/throw new ArgumentException(titles.Length!=dataSo
7、urce.Columns.Count,dataSource);_titles=titles;)/构造函数/param name=dataSource”数据源public ExcelHelper(DataTable dataSource)if(dataSource=null)throw new ArgumentNullException(,dataSource,);/maybe more checks needed here(lEnumerable,IList,IListSource,)?/很难判断,先简单的使用DataTable_dataSource=dataSource;)public Ex
8、celHelper()#endregion#region public Methods/III导 出 到Excel并提示下载/III DataGridpublic void Export(DataGrid dg)if(dg=null)throw new ArgumentNullException(dg);if(dg.AllowPaging 11 dg.PageCount 1)throw new ArgumentException(paged DataGrid cant be exported.,dg);/添加标题样式dg.HeaderStyle.Font.Bold=true;记录数。dg.He
9、aderStyle.BackColor=System.Drawing.Color.LightGray;RenderExcel(dg);)/导 出 到Excel并提示下载/public void Export()if(_dataSource=null)throw new Exception(“数据源尚未初始化”);if(_fields=null&_titles!=null&_titles.Length!=_dataSource.Columns.Count)throw new Exception(_titles.Length!=_dataSource.Columns.Count*);if(_dat
10、aSource.Rows.Count _maxRecords)throw new Exception(导出数据条数超过限制。请 设 置MaxRecords属性以定义导出的最多);DataGrid dg=new DataGrid();dg.DataSource=_dataSource;if(_titles=null)dg.AutoGenerateColumns=true;)else(dg.AutoGenerateColumns=false;int ent=_titles.Length;System.Web.ULWebControls.BoundColumn col;if(_fields=null
11、)for(int i=0;icnt;i+)col=new System.Web.UI.WebControls.BoundColumn();col.HeaderText=_titlesi;col.DataField=_dataSource.Columnsi.ColumnName;dg.Columns.Add(col);)else for(int i=0;icnt;i+)col=new System.Web.UI.WebControls.BoundColumn();col.HeaderText=_titlesi;col.DataField=_fieldsi;dg.Columns.Add(col);
12、/添加标题样式dg.Headerstyle.Font.Bold=true;dg.HeaderStyle.BackColor=System.Drawing.Color.LightGray;dg.ltemDataBound+=new DataGridltemEventHandler(DataGridltemDataBound);dg.DataBind();RenderExcel(dg);)#endregion#region private Methodsprivate void RenderExcel(Control c)/确保有一个合法的输出文件名if(_fileName=null 11 _fi
13、leName=string.Empty|!(_fileName.ToLower().EndsWith(.xlsn)_fileName=GetRandomFileName();HttpResponse response=HttpContext.Current.Response;response.Charset=GB2312;response.ContentEncoding=Encoding.GetEncoding(,GB2312,);response.ContentType=application/ms-excel/msword;response.AppendHeaderCContent-Dis
14、position,uattachment;filename=+HttpUtility.UrlEncode(_fileName);Cultureinfo cult=new Culturelnfo(zh-CNZ true);StringWriter sw=new StringWriter(cult);HtmlTextWriter writer=new HtmlTextWriter(sw);writer.WriteLine();DataGrid dg=c as DataGrid;if(dg!=null)dg.RenderControl(writer);c.Dispose();response.Wri
15、te(sw.ToString();response.End();/11S fS1iIIII得到个随意的文件名/private string GetRandomFileName()Random rnd=new Random(int)(DateTime.Now.Ticks);string s=rnd.Next(lnt32.MaxValue).ToString();areturn DateTime.Now.ToShortDateStringO+s+.xls;-iI?private void DataGridltemDataBound(object sender,I System.Web.Ul.Web
16、Controls.DataGridltemEventArgs e)if(e.ltem.ltemType=ListltemType.ltem 1 1 e.ltem.ltemType=ListltemType.Altematingltem)e.ltem.Attributes.Add(style,vnd.ms-excel.numberformat:);a/e.ltem.Cells3.Attributes.Add(style,/,vnd.ms-excel.numberformat:Y#/#.00);52IB1EcSh1)I#endregionI;i302.C 基于Socket的 CS模式的完整例子所谓
17、C/S模式中的C是C lien t,表示客户端,S是Server,表示服务器;还有另外一个模式B/S,B是Browser,表示浏览器,S是Server,表示服务器。C/S模式主要是指在Winform中进行开发,而B/S主要是在ASP.NET中进行开发。木节先介绍C/S模式,有关B/S模式将会在后面有关ASP.NET的章节中进行介绍。基于Socket服务器端实现本例主要是建立多客户端与服务器之间的数据传输,首先设计服务器。打开VS2008,在D:C#chl7目录下建立名为SocketServer的Windows应用程序。打开工程,往当前窗体中添加控件,如表17-6所示。表1 7-6添加控件列表控
18、 件 Name TextListBox Iblnfoabel labelButton butto 1 启动服务器设计好的界面如图17-2所示。接下来开始运用前面的知识设计服务器,主要分为以下步骤。(1)首先是对一些命名空间的包含,包括 S y s t e m.N e t、S y s t e m.N e t.S o c k e t s S y s t e m.1 0和 S y s t e m.T h re a d i ng。然后定义一系列的全局变量,如下所示。p ri v a t e S o c ke t s;定义 S o c ke t 对象p ri v a t e T h re a d t h
19、;客户端连接服务器的线程p u b li c S o c ke t c S o c ke t;单个客户端连接的S o c ke t 对象p u b li c Ne t w o rks t re a m ns;网络流p u b li c S t re a mR e a d e r s r;流读取p u b li c S t re a mW ri t e r s w;流写入p ri v a t e d e le g a t e v o i d S e t T e x t Ca llb a c kO;用于操作主线程控件(2)接下来是设计客户端连接的管理,主要包括服务器与客户端之间的连接和收发数据问题
20、,把它们放在一个函数Co mmu ni c a t i o n里,如下所示。p u b li c v o i d Co mmu ni c a t i o n()(w h i 1 e (t ru e)(t ry(c S o c ke t =s.A c c e p t ();用c S o c ke t 来代表该客户端连接i f (c S o c ke t.Co nne c t e d)测试是否连接成功(ns =ne w Ne t w o rkS t re a m(c S o c ke t);建立网络流,便于数据的读取s r=ne w S t re a mR e a d e r(ns);实例化流读取
21、对象s w =ne w S t re a mW ri t e r(ns);实例化写入流对象t e s t ();从流中读取s w.W ri t e L i ne(收到请求,允许连接“);/向流中写入数据s w.F lu s h ();清理缓冲区)e ls e(Me s s a g e B o x.S h o w (连接失败“);)c a t c h (S o c ke t Ex c e p t i o n e x)(Me s s a g e B o x.S h o w (e x.Me s s a g e);捕获 S o c ke t 异常)c a t c h (Ex c e p t i o n
22、 e s)(Me s s a g e B o x.S h o w (其他异常+e s.Me s s a g e);捕获其他异常)以下代码的用法在第1 6 章有关线程的用法时曾提到过,主要用于从当前线程操作主线程中的控件,这里就不在赘述p u b li c v o i d s e nd()(I b lnf o.I t e ms.A d d (s r.R e a d L i ne ()+n);)p u b li c v o i d t e s t()(S e t T e x t Ca llb a c k s t c b =ne w S e t T e x t Ca llb a c k(s e nd
23、);I nv o ke (s t c b);)(3)定义好与客户端的连接后,接下来需要利用线程来启动,双 击“启动服务器”按钮,添加如下代码。b u t t o nl.Ena b le d =f a ls e;s =ne w S o c ke t (x d d re s s F a mi ly.I nt e rNe t w o rk,S o c ke t T y p e.S t re a m,P ro t o c o lT y p e.T c p);/创建S o c ke t 对象T P A d d re s s s e rv e rI P =I P A d d re s s.P a rs e
24、(222.1 8.1 42.1 71);I P End P o i nt s e rv e r=ne w I P End P o i nt (s e rv e rI P,1 3);实例化服务器的 I P 和端口s.B i nd (s e rv e r);s.L i s t e n(1 0);t ry(t h 二 ne w T h re a d (ne w T h re a d S t a rt (Co mmu ni c a t i o n);创建线程t h.S t a rt ();启动线程la b e l 1.T e x t =服务器启动成功!)c a t c h(Ex c e p t i o
25、 n e x)(Me s s a g e B o x.S h o w (服务器启动失败!+e x.Me s s a g e);)(4)最后在关闭服务器窗口的时候,还应该关闭线程和当前S o c ke t 连接,代码如下所示。p ro t e c t e d o v e rri d e v o i d Di s p o s e(b o o l d i s p o s i ng)(t ry(i f (d i s p o s i ng&(c o mp o ne nt s !=nu ll)(c o mp o ne nt s.Di s p o s e();t h.A b o rt ();禁用当前S o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 学习 笔记
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内