asp.NetページでExcelテーブルの内容を取得する方法

3229 ワード

asp.NetページでExcelテーブルの内容を取得する方法については、以下のように説明します.
まず、コンポーネントとネーミングスペースを参照します.

using Microsoft.Office.Interop.Excel;
 using System.Data.OleDb;

指定したパスにexcelをアップロードします
ファイルのアップロード方法の省略
最後にアップロードしたexcelをDatasetにします(以下の方法をコピーすれば使えます)

public DataSet seachExcel(string str) //   excel   
  {
    OleDbDataAdapter da = new OleDbDataAdapter();
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    string NameTable = "";
    string ConText = "";
    try
    {
      //  Excel  
      FileInfo info = new FileInfo(str);
      //        
      string fileExt = info.Extension;
      //         
      if (fileExt .ToLower() ==".xls")
      {
        ConText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + str + ";Extended Properties='excel 8.0;hdr=no;IMEX=1';Persist Security Info=false";
      }
      else if (fileExt.ToLower() == ".xlsx")
      {
        ConText = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + str + ";Extended Properties='excel 12.0 Xml;hdr=no;IMEX=1';Persist Security Info=False";
      }
      //  excel
      OleDbConnection conn = new OleDbConnection(ConText);
     //  excel
      conn.Open();
      dt=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null );
        if(dt!=null && dt.Rows .Count >0)
        {
          //  sheet1     
          NameTable = dt.Rows[0]["TABLE_NAME"].ToString();
          //  sheet2     
          //NameTable = dt.Rows[1]["TABLE_NAME"].ToString();
        }
        string sql = "select * from [" + NameTable + "]";
        da = new OleDbDataAdapter(sql, conn);
        try
        {
          da.Fill(ds,NameTable); //      Dataset
        }  
        catch
        { }
        conn.Close();
    }
    catch
    {
    }
    return ds; //  Dataset
}

asp.Net excelテーブルデータの読み出し方法
実際には、Excelテーブルのデータの読み取りは、ある程度Excelテーブルが1枚1枚のデータテーブルと見なすことができるため、データベースのデータの読み取りと非常に似ています.両者の主な違いは、使用するデータエンジンが異なることです.
本明細書のプログラムでは、以下のコードによりExcelテーブルデータの読み取りを実現します.

string strDataPathPhy = "c://1.xls";
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + strDataPathPhy + ";Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet1$]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataTable dtData = new DataTable();
myCommand.Fill(dtData);
myConn.Close();

Excelは左のデータベースを見ることができ、中のワークシートは左のデータベーステーブルを見ることができるので、検索結果をフィルタすることもできます.
 
  
strCom = " SELECT * FROM [Sheet1$] WHERE column1 <> '' ";

これでdtDataの中のデータは[Sheet 1$]テーブルのcolumn 1が空でないすべてのデータです
以上、aspについて説明する.NetページでExcelテーブルの内容をどのように入手するかは、皆さんの役に立つと思います