20131130关于static变量、读取EXCEL、FTP和可空数据类型的杂记
1、全局变量(static变量)是和进程相关的,启动程序的一个新的进程,就会有一组static变量和进程关联。全局变量的范围就是这个进程运行的期间。当然因为使用static变量可能会造成数据传输的混乱,所以,能不用的时候就不要用。(PS:今天在练习WINFORM修改密码的时候,用了一次static变量来存从登陆界面传过来的id,以便在修改密码的界面通过id来获取用户的旧密码,从而进行比较。)
2、怎样读取Excel中读取数据
利用程序处理Excel的技术很多,比如:(1)OLE Automation:程序启动一个Excel进程,然后和Excel进程进行通讯来进行Excel的操作。优点:强大,能够使用Excel的所有功能,要求装Excel,微软最推荐这种用法,因为可以促进Excel的销量。会启动Excel进程,不适合于服务器(比如Asp.Net网站,安全性、效率);(2) OpenXML,微软提供的读写Excel的技术,优点和NPOI差不多,不过只能处理xlsx格式文件。(3) NPOI、MyXls等,NPOI能够分析Excel文件的格式,能够进行常用Excel操作,不依赖于Excel,节省资源,没有安全性、性能的问题,在ASP.net中用最合适。只能处理xls格式文件、不能处理xlsx这样的新版本Excel文件格式。处理xlsx还要用OpenXML。
在本次的学习练习中,我使用的是NPOI,使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。在使用NPOI之前需要先导入第三方的.dll文件。
<1>读取Excel中的数据:
Using(FileStream stream=new FileStream(@“C:/文件名.xls”,FileMode.Open,FileAccess.Read))
{
HSSFWorkbook workbook=new HSSFWorkbook(stream);
MessageBox.Show(workbook.GetSheetName(0));
}
- 读取字符串类型数据MessageBox.Show(sheet.GetRow(3).GetCell(4).StringCellValue); 读取数字类型数据NumericCellValue。
- 判断单元格数据类型:读取GetCell(4).CellType,与HSSFCell类中定义的常量比较即可。
- 判断使用区域:结束行号:LastRowNum
<2>将Excel中的数据写入数据库
using (FileStream stream = new FileStream(@"C:\文件名.xls", FileMode.Open, FileAccess.Read))
{
HSSFWorkbook workbook = new HSSFWorkbook(stream);
HSSFSheet sheet = workbook.GetSheetAt(0);
//因为第一行是表头,不导入,所以i从1开始
for (int i = 1; i <= sheet.LastRowNum; i++)
{
T_User user= new T_User ();
HSSFRow row = sheet.GetRow(i);
HSSFCell cellDoorNum = row.GetCell(0);
user.DoorNumber = cellDoorNum.StringCellValue;
user.Name = row.GetCell(1).StringCellValue;
......
//此处省略N多赋值
T_UserBLL userBLL = new T_UserBLL ();
userBLL .AddNew(user);
}
MessageBox.Show("导入数据成功!|");
}
<3>数据出数据库到出到EXCEL
今天没时间研究了。。。以后补上。
3、程序操作FTP
Windows下常用FTP服务器:Serve-U、IIS FTP、FileZilla Server(免费、开源)
Windows下常用FTP客户端:Windows内置(命令行ftp.exe、资源管理器)、CuteFtp(收费)、FlashFXp、FileZilla FTP Client。
今天学习练习用的是FileZilla Server和FileZilla FTP Client。安装和使用都挺简单的,琢磨下就会了。主要复习下是怎么程序操作的。
.Net中内置的操作FTP的类有:WebClient、FtpWebRequest。WebClient用起来简单,但是只能上传、下载。 FtpWebRequest 比较强大,WebClient内部就是调用FtpWebRequest实现的,如果要实现遍历ftp文件、创建ftp文件夹等就要用FtpWebRequest 。
本次练习用的是FtpWebRequest。从FTP服务器端下载文件方法。在这里需要一个开源的FtpClient.cs
private void bttFromFTP_Click(object sender, EventArgs e)
{
//127.0.0.1是FTP服务器地址,tset1是用户名,123456为密码
FtpClient fc = new FtpClient("127.0.0.1", "test1", "123456");
//文件名1..xls是在服务器上的文件名。"C:\文件名2.xls "导入到某个文件夹下的文件名
fc.Download("文件名1..xls", "C:\文件名2.xls ");
//读取导出的文件有多少行
using (FileStream stream = File.OpenRead(""C:\文件名2.xls "))
{
HSSFWorkbook wb = new HSSFWorkbook(stream);
HSSFSheet sheet = wb.GetSheetAt(0);
MessageBox.Show(sheet.LastRowNum.ToString());
}
}
4、可空数据类型的一些知识
如果数据库里面存的是NULL,那么用dr[“Age”]取出来的值是DBNull.value。在ADO.NET中,对于C#中的int是不可为null的,数据中的int又可为控,这得 有个权衡。可通过DBNull.value==null的值是false证实。因此,可用dr[“Age”]==DBNull.value来判断字段是否为null,也可用dr.IsNull(“Age”)来判断。
在值类型后加?就可变为可空类型,比如int?,DataTime?;
int?a=null;
int b=2;
a=b;//正确
b=a;//错误
PS:今日的学习内容是在winform中操作的。本次学习资料来自传智播客视频。。3Q。。。