.Net开发
文章平均质量分 69
jinjazz
这个作者很懒,什么都没留下…
展开
-
c#中高效的excel导入sqlserver的方法
将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而真正的导入过程只需要4.5秒。原创 2008-07-14 19:43:00 · 29272 阅读 · 21 评论 -
用QueryTable向excel批量导入数据
前面写过两篇excel操作的文章,有朋友质疑大批量数据下的性能问题,这个时候最好用批量复制的方法,可以用excel的QueryTable来直接查询数据库,但是必须引用com组件。参考代码:using System;using System.Collections.Generic;using System.Text;using Syst原创 2008-08-05 14:04:00 · 11530 阅读 · 9 评论 -
用ADO向Excel批量导入数据
和前面一篇用OleDB的方法类似,我们可以用ADO从RecordSet对象向Excel批量插入数据,这个方法无法自动复制字段名。我们需要引用ADO和Excel的com对象参考代码如下using System;using System.Collections.Generic;using System.Text;using S原创 2008-08-06 12:03:00 · 5324 阅读 · 6 评论 -
C#合并多个结构一样的Excel
有多个结构一样的Excel,带复杂表头需要合并为一个,且去掉多余的表头数据,可以用COM组件来读取每个Excel表格的Range来合并到一个新的表格中。样例如图有很多相同格式的表格,合并代码如下:using System;using System.Collections.Generic;using System.Text;using原创 2008-08-07 12:47:00 · 5506 阅读 · 3 评论 -
c#中如何控制模态子窗体中的进度条
这个问题会让一些初学者感到困惑,一方面模态窗体在打开之后(Form.ShowDialog).主线程无法继续执行下面的事务;另一方面,又要在处理事务的时候来同步这个窗体里面的进度条。这两件事情都必须做,却都不能先做...所以很多人不得不把事务处理写到模态窗体当中去,这样可以达到目的,却造成了代码结构混乱,而且子窗体无法复用,如果有多个事物,不得不为每个事务来写控制窗体。 这里我们介绍一种比原创 2008-05-24 13:27:00 · 4848 阅读 · 1 评论 -
C#中Winform的Treeview节点"正在展开..."的效果
比较简单的做法,增加一个子节点提示.然后开线程请求真实的子节点,完毕后替换提示节点。 代码如下using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;us原创 2008-05-29 21:23:00 · 4154 阅读 · 0 评论 -
c#如何取得事件注册的方法
这个问题来自论坛,原文为如何判断事件已经被注册过? 用反射取出事件绑定的委托实例,然后用GetInvocationList就可以得到所有注册的方法了。代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using S原创 2008-06-05 15:15:00 · 10600 阅读 · 1 评论 -
IFormatProvider 接口
使用IFormatProvider 接口可以让你的代码变得优雅,msdn上有一个2-36进制转换的例子,你应该学习一下。 参考http://msdn.microsoft.com/zh-cn/library/system.iformatprovider(VS.80).aspx 其他相关借口还有ICustomFormatter和IFormattable. 具体的实例,在很多类型中都有T原创 2008-06-06 18:11:00 · 1614 阅读 · 0 评论 -
提高你的调试代码的效率
使用 System.Diagnostics.Debug和System.Diagnostics.Trace可以大幅度提高你的调试代码的效率和安全性。 参考链接: http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.aspx http://msdn.microsoft.com/en-us/library/system原创 2008-06-11 17:56:00 · 2677 阅读 · 1 评论 -
Windows API入门简介
Windows API函数库对于缺乏Windows开发基础知识的人来说实在是太庞大了,以至于想入门却无从下手。其实只要了解一下他的基本模块功能就可以了,具体的实例可以在使用中来参考开发文档,从而慢慢积累。 常用三个模块是User32.dll,Kernel32.dll和gdi32.dll。 user32.dll是Windows用户界面相关应用程序接口.包括窗体创建,销毁,发送消息等,还有ho原创 2008-06-12 22:20:00 · 3145 阅读 · 0 评论 -
3个字节的空txt文本文件
运行下面代码可以建立一个3个字节的空txt文本文件,想了解其原因的请参考文本文件的编码方式和unicode的具体资料,google上就有很多。System.IO.FileStream fs = new System.IO.FileStream(@"d:/ss.txt", System.IO.FileMode.Create); fs.Write(new byte[]原创 2008-06-10 18:14:00 · 3241 阅读 · 0 评论 -
通过文件结构直接生成xls文件的VB.Net和Java两个版本
在论坛发布的帖子,受到热心网友支持,翻译了两个语言的版本出来,在此一起收录原文:通过文件结构直接生成xls文件 ypZhuang 网友的java代码import java.io.*; import java.util.*; public class ExcelWriter { public转载 2008-08-04 15:02:00 · 3356 阅读 · 0 评论 -
通过excel可识别的xml结构直接生成xls文件
上一片文章演示了如何根据简单的excel文件结构直接生成xls文件,如果涉及到合并,公式之类的复杂操作,可以使用xml结构来直接构造xls文件,比如生成如下所示文件上图中D列和E列为公式,第4行为公式合计,7、8行为合并过的单元格。完整代码如下:using System;using System.Collections.Generic;usi原创 2008-08-04 14:37:00 · 9697 阅读 · 6 评论 -
C#中的属性类
这个问题来自论坛提问,对于初学者来说确实比较陌生,msdn参考文档http://msdn.microsoft.com/zh-cn/library/system.attribute.aspx我们先直观的表达一下他的作用之一:比如一个自定义windows控件的DefaultEvent可以表示一个控件默认事件: 如你双击form他会默认到onLoad事件中,双击button,他会默认原创 2008-05-08 22:39:00 · 9293 阅读 · 2 评论 -
c#中高效的excel导入oracle的方法
如何高效的将excel导入到oracle?和前两天的SqlBulkCopy 导入到sqlserver对应,oracle也有自身的方法,只是稍微复杂些.那就是使用oracle的sql*loader功能,而sqlldr只支持类似csv格式的数据,所以要自己把excel转换一下。实现步骤:用com组件读取excel-保存为csv格式-处理最后一个字段为null的情况和表头-根据excel结构原创 2008-07-21 18:39:00 · 8179 阅读 · 5 评论 -
一段设置和取消windows静音效果的Delphi代码
看到完美mm在windows版提问求这么一个dos命令,发现没有,于是自己摘录了以下代码编译了一个控制台程序unit Unit1;interfaceuses MMSystem, Dialogs;type TDeviceName = (Master, Microphone, WaveOut, Synth);procedure SetVolumeMute(DN:TDeviceN转载 2008-07-18 15:13:00 · 4363 阅读 · 2 评论 -
ASP.NET中 分析器错误:发现不明确的匹配
这是一个不好的代码习惯引起的发布后运行时的问题。错误原因为.net2.0无法正确识别服务器控件和变量的大小写区别,但是这个错误只有在iis中体现,在文件系统的调试中没有发生。错误信息引发错误的参考代码如下:public partial class _Default : System.Web.UI.Page { private string button1="test";原创 2008-07-24 16:11:00 · 13522 阅读 · 9 评论 -
一句话理解ref object的意义
很多新手觉得object作为参数传递,已经是指针,可以改变内容,为何要传引用void test(ref object obj)一句话概括一下,加了ref,可以传进去一头猪,传出来一头牛,不加ref,猪永远都是这头猪,最多从活猪变成死猪。原创 2008-07-30 14:57:00 · 6018 阅读 · 5 评论 -
通过文件结构直接生成xls文件
以下代码演示了 直接通过excel可以识别的文件结构生成xls文件的方法,这样就可以不引用麻烦的ole了。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication16{ class Progr原创 2008-08-01 15:05:00 · 12584 阅读 · 18 评论 -
ConsoleApplication也精彩,一个控制台进度条的示例。
这年头记得习惯用ConsoleApplication的人恐怕也没有多少了,系统工具无论巨细,一律拖个巨大的form出来..其实控制台,写得好点也是很有趣的,比如这个效果下面代码演示了如何在控制台下展示一个进度条的工作过程。原理很简单,就把他当成一张纸,不停的写了擦,擦了写,当中的技巧全靠想象力,因为这个类实在是太简单了。using System;namespac原创 2008-05-12 21:54:00 · 12449 阅读 · 0 评论 -
c#通过oledb获取excel文件表结构信息
这个问题来自论坛提问,同理可以获得access等数据库的表结构信息。 using System;namespace ConsoleApplication11...{ class Program ...{ public static void Mai原创 2008-05-13 14:22:00 · 8666 阅读 · 2 评论 -
c#中WinForm的TextBox循环自动滚动示例
这个问题来自论坛提问,演示代码如下using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;原创 2008-05-16 17:58:00 · 8360 阅读 · 4 评论 -
Dephi中获取webbrowser选取区域的html代码示例
这个问题来自论坛提问,示例代码如下,主要是要了解Document对象//------这个论坛居然不支持delphi代码样式unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleC原创 2008-05-20 23:11:00 · 2283 阅读 · 0 评论 -
一个验证码识别的代码
字体固定,位置固定,干扰点和字体颜色深度没有交叉,比如下面的样例,是我前几天帮朋友写投票机刷票时碰到的一个具体案例。基本就三步,确定特征码-分割图片-逐个匹配,代码很简单,不超过100行using System;using System.Collections.Generic;using System.Text;using System.Drawing;原创 2008-06-17 14:44:00 · 10857 阅读 · 11 评论 -
浮点数精度和IEEE754标准
浮点数精度丢失的"bug"不停的被种语言的开发人员或者数据库开发人员发现,或许有些人已经听说了其中的原因,但是仍然无法把握其出现的规律。解决问题的最好办法是让错误原因重现,而能让错误随时重现,说明该错误已经在你掌控之中,从而可以在真正的开发中去避免。 我们看两个场景: 一个是c#代码,他没有按照预期的输出0.1,而是0.10000000149011612 Console.WriteLi原创 2008-06-18 15:10:00 · 5438 阅读 · 1 评论 -
如何通过鼠标控制无标头窗体
这个问题也是来自论坛提问,同样是.Net WinForm新手的问题,这样的问题如果在Deplphi这样的板块立刻就被秒杀了,可是.Net版知道的人好像不太多。介绍两个方法,一个是发送SC_Move消息,一个是改变鼠标区域消息方法一:using System;using System.Collections.Generic;using S原创 2008-12-09 09:25:00 · 1580 阅读 · 5 评论 -
C#事件和委托的基础知识模型
这里设计了一个较为完整且简单的事件模型,帮助初学者了解c#的事件基本概念和逻辑。 using System;namespace ConsoleApplication3{ class Program { //一个较为完整的委托-事件 模型应用 //by jinjazz //http://blog.csdn.n原创 2009-02-17 22:07:00 · 2648 阅读 · 1 评论 -
如何禁用双击窗体图标关闭窗体
这个问题来自论坛提问,.Net由于对WindowsAPI的透明度增强,很多Winform开发者都不太了解经典的win32消息方面的知识。所有窗体上的鼠标反映都可以用WndProc拦截,除了系统菜单、标题栏、系统按纽还包括客户区。using System;using System.Windows.Forms;using System.Runti原创 2008-12-09 09:19:00 · 2278 阅读 · 4 评论 -
如何让WebBrowser获取单击事件
这个问题来自论坛提问,vs2005的webbrowser控件如何接收鼠标事件,很多事情其实自己动动脑子就有办法的。主要是3步,给dom对象插入js脚本去响应鼠标-〉通过url跳转去通知webbrowser-〉截获跳转事件去c#中处理示例代码:using System;using System.Windows.Forms;using mshtml;原创 2008-12-10 09:19:00 · 7536 阅读 · 3 评论 -
鼠标闲置一段时间后自动隐藏
该问题来自论坛提问,两个api函数GetLastInputInfo:获取闲置时间ShowCursor:设置鼠标状态,这里要注意,本函数并不能直接影响鼠标状态,而是设置状态计数器,参数为True时计数器+1,反之-1,只有当计数器大于等于0时鼠标为显示,小于0时鼠标隐藏。所以可能会发生某次调用该函数而没有生效的情况。为了避免这个问题,可以用wile循环判断结果。using Sys原创 2008-12-15 12:38:00 · 3869 阅读 · 4 评论 -
punycode和中文相互转换
问题来自论坛,google了一下有java的版本,随手翻译了一下,测试没有问题java代码来自http://www.koders.com/java/fidA5FC1F237C9D005FD1BAD91769F8CF107601BA28.aspx感谢原作者 using System;using System.Collections.Generic;using System原创 2009-03-11 20:58:00 · 6620 阅读 · 1 评论 -
邮件群发当中显示隐藏其他收件人
收件人统一 显示Undisclosed-Recipient,想要显示收件人自己貌似没有办法(确实要这样,只能一封一封的发了)。 很简单,就是不要写收件人地址,只写密抄地址就行了。在代码里面,就是把类似 Msg.To.Add(..) 改为 Msg.BCC.Add(..) ------------------------- 今天才知道原来收件人地址原创 2009-03-23 16:53:00 · 8167 阅读 · 1 评论 -
.Net的DataSet直接与SQL2005交互
DataSet在无适配器的情况下需要与SQL2005数据库交互,可以通过SQL语句分解DataSet序列化之后的xml来生成查询结果集,然后去批量更新或者追加数据。 测试代码如下 Normal 0 7.8 磅 0 2 false false false EN-US原创 2009-04-02 23:24:00 · 3228 阅读 · 0 评论 -
动态装卸DLL示例-匪徒和炸弹
我来设计一个例子,我在D目录运行程序A(土匪)。然后望D目录丢文件(炸弹)过去,土匪判断该文件是否炸弹(包含实现了接口IBomb的类),如果是,则执行IBomb的Explode方法让炸弹爆炸,当然炸了以后就没有了,文件将被删除。 接口定义--编译为Interface.dll供炸弹和土匪引用。using System;namespace Interface原创 2009-08-11 21:38:00 · 2357 阅读 · 4 评论 -
[ListView.View=List]的垂直滚动条
该问题来自论坛提问,当ListView.View=List时,滚动条只能是水平的,解决这个问题需要子类化ListView处理WndProc消息,通过Windows API函数来设置它的滚动条。 演示代码: using System;using System.Drawing;using System.Windows.Forms;namespace WindowsAppli原创 2009-02-13 23:12:00 · 8947 阅读 · 5 评论 -
C#把外部文件拖入PictureBox中
不知道为何.net编辑器无法自动识别PictureBox的AllowDrop,属性列表中也没有,实际上他确实可以用。 private void Form1_Load(object sender, EventArgs e) { //这句代码不会抱错,但是需要手动输入,.net编辑器无法自动识别AllowDrop this.原创 2009-02-11 19:24:00 · 4009 阅读 · 5 评论 -
c#线程基础之原子操作
使用System.Threading.Interlocked类可以提高线程的安全性,具体资料参考msdn: http://msdn.microsoft.com/zh-cn/library/system.threading.interlocked.aspx 一般情况下,在子线程内使用i++这样的方式访问全局变量的方式是不安全的做法。测试下面的代码,在test1中经过100次number++,原创 2008-06-20 13:57:00 · 5119 阅读 · 0 评论 -
c#线程基础之线程控制
用ManualResetEvent和AutoResetEvent可以很好的控制线程的运行和线程之间的通信。msdn的参考为: http://msdn.microsoft.com/zh-cn/library/system.threading.autoresetevent.aspx http://msdn.microsoft.com/zh-cn/library/system.threading原创 2008-06-20 14:01:00 · 10686 阅读 · 9 评论 -
c#线程基础之线程池
使用线程池可以更好的控制一系列线程的运行状态。msdn参考文档 http://msdn.microsoft.com/zh-cn/library/3dasc8as(VS.80).aspx 这里面ms把ThreadPool描述的很清楚了,但是它的例子太简单,只是简单介绍了如何用信号量数组来控制线程池的成员。一个更好的例子在ThreadPool.GetMaxThreads的介绍文档中。原创 2008-06-23 12:36:00 · 5853 阅读 · 0 评论 -
获取当前调用函数的信息
System.Diagnostics.StackTrace可以看到很多运行时当前堆栈中有用的信息,权威参考 http://msdn.microsoft.com/zh-cn/library/system.diagnostics.stacktrace.aspx 开始我是为了得到webservice中当前执行的方法的名称而找到的这个东西。下面代码演示了,一个类中方法的之间的调用次序 us原创 2008-06-30 16:25:00 · 2072 阅读 · 1 评论