ASP.NETでexcelコンテンツを読み込み、画面に表示する


プロジェクトではexcelのファイルの内容をデータベースにインポートするのによく使われますが、少し時間がかかったばかりで、例を挙げると、基本的にExcelをインポートして表示する機能が実現できるでしょう.インポートしたexcelファイルはxls、つまり2003です.
コードの考え方は以下の通りである:読み取るexcelファイルは必ずローカルハードディスクでなければならないので、一般的にはリモートユーザーに自分のハードディスク上のExcelファイルを選択させ、ユーザーが選択したファイルをローカルサーバーにアップロードし、ローカルサーバー上で操作する.私はインタフェースの後置コードの重要な部分を貼って、みんなは自分でゆっくり見て、すべて注釈があります.

//     
    protected void btnUp_Click(object sender, EventArgs e)
    {
        bool b = Upload(fuExcel);  //   excel  
        if (!b)
        {
            return;
        }
        string name = fuExcel.FileName;
        string filepath = Server.MapPath("~/upload/") + name;
        DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }

    //      
    private bool Upload(FileUpload myFileUpload)
    {
        bool flag = false;
        //      
        bool fileAllow = false;
        //              
        string[] allowExtensions = { ".xls" };

        //         
        string path = HttpContext.Current.Request.MapPath("~/upload/");
        //        
        if (myFileUpload.HasFile)
        {
            //            ,        
            string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
            //               
            for (int i = 0; i < allowExtensions.Length; i++)
            {
                if (fileExtension == allowExtensions[i])
                {
                    fileAllow = true;
                }
            }

            if (fileAllow)
            {
                try
                {
                    //        
                    myFileUpload.SaveAs(path + myFileUpload.FileName);
                    lblMes.Text = "      ";
                    flag = true;
                }
                catch (Exception ex)
                {
                    lblMes.Text += ex.Message;
                    flag = false;
                }
            }
            else
            {
                lblMes.Text = "     :" + myFileUpload.PostedFile.FileName + ",    xls   ,   !";
                flag = false;
            }
        }
        else
        {
            lblMes.Text = "       excel  !";
            flag = false;
        }
        return flag;
    }

    //      Excel      DataSet ,  filepath Excel       , sheetname excel      
    public DataSet ExcelDataSource(string filepath, string sheetname)
    {
        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
        DataSet ds = new DataSet();
        oada.Fill(ds);
        conn.Close();
        return ds;
    }

    //  Excel    sheetname。
    public ArrayList ExcelSheetName(string filepath)
    {
        ArrayList al = new ArrayList();
        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        conn.Open();
        DataTable sheetNames = conn.GetOleDbSchemaTable
        (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
        conn.Close();
        foreach (DataRow dr in sheetNames.Rows)
        {
            al.Add(dr[2]);
        }
        return al;
    }

最初からWebサイトのルートディレクトリの下にuploadフォルダを作成し、彼の権限を読み書き可能に設定することに注意してください.この権限の问题は头が大きくて、いったいどのようにするべきなことを知らないで、XPシステムの下で新しく创立したフォルダはすべて読み取り専用のようで、私の右ボタンの属性は読み取り専用を取り除いて、结果は再び见る时やはり読み取り専用で、しかしプログラムに対して何の意味がないことを発见するようで、excelファイルを上传した后にやはり読むことができて见ることができます.
次はソースです.