轉: asp.net Excel Import / Export

來源:互聯網
上載者:User

轉:http://blog.csdn.net/smartyaya/archive/2006/09/29/1305361.aspx

 

1、Excel資料匯入到資料庫中:

//該方法實現從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 );
            return ds ;
        }上面的代碼實現了將Excel中的資料寫進DataSet中,實現了這一步後,你可以按照自己的需要對獲得DataSet進行處理,需要注意的一個問題是,你必須要指定sheetname,即Excel中的哪一個工作單需要匯入,否則會出現錯誤。

2、如何從Excel中獲得工作單(sheetname):

//獲得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;
}通過這兩步,就基本可以實現將Excel匯入到資料庫中了,具體實現中的細節問題,你可以自己在實踐中獲得。

3、將資料庫中的資料匯入Excel中,在這裡我講敘自己實踐中的兩個方法:

方法一:從最基本的寫檔案入手,將從資料庫中讀出來的資料寫入到Excel中;

//該方法實現將資料匯入到Excel檔案中,其中的DataTable dt就是你需要將資料寫入到Excel中的資料;
public void ExportExcel( DataTable dt , StreamWriter w )
...{
    try
    ...{
        for( int i = 0 ; i < dt.Columns.Count ; i ++ )
        ...{
            w.Write ( dt.Columns[i] );
            w.Write( ' ' );
        }
        w.Write ( " " );

        object[] values = new object [dt.Columns.Count];
        foreach ( DataRow dr in dt.Rows )
        ...{
            values = dr.ItemArray ;
            for ( int i = 0 ; i < dt.Columns.Count ; i++ )
            ...{
                w.Write ( values[i] );
                w.Write ( ' ' );
            }
            w.Write ( " " );
        }
        w.Flush();
        w.Close();
    }
    catch
    ...{
        w.Close();
    }
}StreamWriter w就是你自己建立的一個流,建立該資料流時,你需要自己指定需要將資料寫入到那個檔案,即指定檔案路徑,要實現下載的話,就可以簡單的用Response.Redirect ( "指定需要被下載的檔案路徑" );

方法二:該方法實現的是將資料從DataGrid中匯入到Excel中:

//filename為Excel的名字,ToExcelGrid就是資料來源,在此為DataGrid資料來源;
private void ExportExcelFromDataGrid( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
...{
    Response.Clear();
    Response.Buffer=   true;    
    Response.Charset="utf-8";          
    Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );    
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");//設定輸出資料流為簡體中文  
    Response.ContentType   =   "application/ms-excel";//設定輸出檔案類型為excel檔案。    
    this.EnableViewState   =   false;          
    System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo("ZH-CN",true);  
    System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);    
    System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);  
    ToExcelGrid.RenderControl(oHtmlTextWriter);    
    Response.Write(oStringWriter.ToString());  
    Response.End();
}用該方法的時候,需要注意將DataGrid資料來源中的允許翻頁,允許排序設定成"false",同時一些特殊行進行需要將其設定成不可視,如編輯行等,若不這樣的話,用該方法實現的資料匯入到Excel,會出現異常“需要將XXX放入到一個具有runat=server的form表單中”,我具體忘了XXX代表的意思,你可以在實踐中嘗試一下,就可以知道出現的錯誤。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.