zoukankan      html  css  js  c++  java
  • C#读取Excel数据操作大全

     

    • 苦丁茶 发表于 2014-02-10 12:58:00 | 分类标签: ASP.NET 读取Excel
    • 本文介绍下,用C#读取excel数据的例子,包括读取整个工作薄的数据、读取工作薄选定区域中的数据、读取excel特定区域中的数据。

      例1,读取Excel工作薄中的全部数据。
      读取Excel工作薄1(工作薄名称:Sheet1)中的全部数据,在OleDbDataAdapter对象中的SQL语句应为:"Select 字段列表 From [工作表名$]"。

      代码示例:
      public void ReadExcel(string sExcelFile)   
      {   
      string sConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;
          Data Source=" + sExcelFile + ";Extended Properties=Excel 8.0";   
          OleDbConnection connection = new OleDbConnection(sConnectionString);   
          OleDbDataAdapter adp = new OleDbDataAdapter(
          "Select * from [Sheet1$]",connection);   
          DataSet ds = new DataSet();   
          adp.Fill(ds,"Book1");   
          grd_Excel.DataSource = ds.Tables["Book1"].DefaultView;   
          grd_Excel.DataBind();   
      }


      例2,读取Excel工作薄选定区域中的数据。
      首先,在工作簿中,左键拖拽选取要定义成为表的区域,从菜单中选择‘插入’->‘名称’->‘定义’,在‘定义名称’对话框出现中键入表的名字:“TestTable”,OK。
      那么SQL语句应为:SELECT * FROM TestTable。

      代码示例:
      public void ReadExcel(string sExcelFile)   
      {   
      string sConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;
          Data Source=" + sExcelFile + ";Extended Properties=Excel 8.0";   
      OleDbConnection connection = new OleDbConnection(sConnectionString);   
      OleDbDataAdapter adp = new OleDbDataAdapter(
          "SELECT * FROM TestTable", connection);   
      DataSet ds = new DataSet();   
          adp.Fill(ds,"Book1");   
          grd_Excel.DataSource = ds.Tables["Book1"].DefaultView;   
          grd_Excel.DataBind();   
      }


      例3,读出excel特定区域的数据。

      代码示例:
      protected void Button1_Click(object sender, EventArgs e)
      {
      string filepath=FileUpload1.PostedFile.FileName;
              ReadExcel(filepath, gdBom);
      }
      public void ReadExcel(string sExcelFile,GridView dgBom)
      {
              DataTable ExcelTable;
              DataSet ds = new DataSet();
        //Excel的连接
              OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sExcelFile + ";" + "Extended Properties=Excel 8.0;");
              objConn.Open();
              DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
      string tableName = schemaTable.Rows[0][2].ToString().Trim(); //获取 Excel 的表名,默认值是sheet1
              string strSql = "select * from [" + tableName + "]";
              OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
              OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
              myData.Fill(ds, tableName); //填充数据
              dgBom.DataSource =ds;
              dgBom.DataBind();
              objConn.Close();

              ExcelTable = ds.Tables[tableName];
              int iColums = ExcelTable.Columns.Count;//列数
              int iRows = ExcelTable.Rows.Count;//行数
        //定义二维数组存储 Excel 表中读取的数据
              string[,] storedata = new string[iRows, iColums];

      for(int i=0;i<ExcelTable.Rows.Count;i++)
      for (int j = 0; j < ExcelTable.Columns.Count; j++)
                  {
          //将Excel表中的数据存储到数组
                      storedata[i, j] = ExcelTable.Rows[i][j].ToString();
                  }
      int excelBom = 0; //记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的用用信息是从第三行开始
              //确定有用的行数
              for (int k = 2; k < ExcelTable.Rows.Count; k++)
      if (storedata[k, 1] != "")
                      excelBom++;
      if (excelBom == 0)
              {
                  Response.Write("<script language=javascript>alert('您导入的表格不合格式!')</script>");
              }
      else
              {
        //LoadDataToDataBase(storedata,excelBom) //将 storedata 中有用的数据写入到数据库中
              }
          }

    • 转载自http://www.hello-code.com/blog/asp.net/201402/2687.html

  • 相关阅读:
    Server Tomcat v8.0 Server at localhost failed to start.的解决方法
    使用quartz实现定时器功能
    使用SpringMVC自带的@Scheduled完成定时任务
    springMVC中不通过注解方式获取指定Service的javabean
    java set初始化问题
    一个粗糙的分页
    eclipse下maven springMVC 整合 mybatis
    联合分布(二):联合分布
    联合分布(一):什么是概率分布
    mysql:启动服务时遇到的问题
  • 原文地址:https://www.cnblogs.com/shangshen/p/3591374.html
Copyright © 2011-2022 走看看