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。。。

posted @ 2013-12-01 00:08  LEITION  阅读(292)  评论(0编辑  收藏  举报