Asp.net(C#)操作Excel的问题

来源:互联网 发布:保罗西蒙加芬克尔知乎 编辑:程序博客网 时间:2024/06/05 18:53

     1.使用ADO.NET访问Excel?

答:

   首先代码如下。

           //指定链接的数据源
            string source = "F://XXX//XXX//showpic//showpic//商品销售.xls";
            string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + source + ";extended properties='Excel 8.0;HDR=YES;IMEX=1;'";
            //设定select语句
            string query = "select * from [商品销售$]";
            OleDbConnection oleConnection = new OleDbConnection(sConnectionString);
            oleConnection.Open();
            OleDbCommand oleCommand = new OleDbCommand(query,oleConnection);
            OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
            DataSet ds = new DataSet();
            //填充适配器中的数据集
            oleAdapter.Fill(ds,"[商品销售$]");

            //绑定GridView的数据源
            GridView1.DataSource = ds;
            GridView1.DataMember = "[商品销售$]";
            //绑定数据源到GridView
            if (!this.IsPostBack)
            {
                GridView1.DataBind();
            }
            if (!this.IsPostBack)
            {
               //清空下拉列表框
                DropDownList1.Items.Clear();
                //用数据库的数据设置下拉列表框中的选项
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
                    DropDownList1.Items.Add(ds.Tables[0].Columns[i].ToString());
                }
                //关闭数据连接
                oleConnection.Close();
            }

 

   上面过程中有几个方面值得我们注意:

第一,注意链接数据源代码,

string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + source + ";extended properties='Excel 8.0;HDR=YES;IMEX=1;'";

  其中,extended properties=Excel 8.0,而不是12.0 ,其次,如果读Excel出来的数据为空或者出错,则是因为没有添加HDR=YES;IMEX=1; 最后,如果你读出来的数据有“F1”“F2”等的说明,入伏哦想取消的话,就需要设置HDR参数为YES

二、数据处理     
现在,我们来看看到底怎样具体对数据进行操作。     
1、Select语句     
Select语句是所有数据操作里面最常见最常用的,现在,我们首先看最简单的取得一个数据表(WorkSheet)的所有数据,假设这个数据表(WorkSheet)名为“First”,可以这样取得所有数据:SELECT   *   FROM   [First$]。这里,我们要注意两点:一是数据表名必须用方括符;二是数据表名字一定要加一个“$”符号来表示这是一个数据表。我们还可以限制检索数据的范围,比如我们要检索A1到D20的所有数据,可以这样检索:SELECT   *   FROM   [SampleSheet$A1:D20],这里,使用A1:D20来限制检索范围。如果数据表第一行已经定义数据列的名字,我们可以选择需要显示的数据列来检索:SELECT   姓名   FROM   [First$A1:B2]。     
    我们在具体使用中一定要注意几点:(1)针对每一列数据,定义数据的名字或者类型;比如我们在人事表中,可以定义“姓名”、“性别”等列,当然,这里的定义就是设置列的第一行值为需要定义的值。(2)注意Excel数据结构和Access的不同;在处理数据的过程中严格区别两者的差异,不要将Access数据处理SQL语句直接移植来操作Excel。   

  
2、Insert语句     
Insert语句在Excel中可能使用起来比较麻烦,因为Excel中,怎样来区分每一列数据呢?Access中每列数据有数据段名,Excel中没有这一项设置。看看刚才我们使用的Select语句,我们用数据列的第一行作为数据列名来检索数据,现在,我们也用第一行来区分数据列,比如可以这样插入数据:INSERT   INTO   [first$]   (姓名,性别,年龄)   valueS   ( '章三 ',   '男 ',   '23 ')。     
    
3、Update语句     
Update语句和Insert语句差不多,比如我们可以这样修改更新数据:UPDATE   SampleSheet$   SET   Age   =   '24 '   WHERE   FirstName   =   'John '   AND   LastName   =   'Albert '     
    
4、建立数据表(WorkSheet)     
和操作Access一样,我们直接听过代码来建立新的数据表:     
CREATE   TABLE   NewSheet   (   Position   char(255),   Department   char(255),   DeptEmail   char(255))   

 

 

 

 

原创粉丝点击