ASP.NET C# DataTable與Excel互操作樣本

來源:互聯網
上載者:User

前幾天朋友公司開發需要用到Excel的匯入匯出,需要通過Web將資料庫中的內容與Excel互導!問到我,自己以前做過,網上很多類似的解決方案都是使用類似DataGrid或GridView這樣的控制項直接匯入到Excel,方便,但不是很實用,有時候甚至匯出的Excel並不是我們需要的格式!記得曾經聽邵志東老師講過ASP.NET下的自動化操作。但一時又沒找到相關的代碼。在這裡我將自己的樣本在這貼出,以方便有自己和以後有這方面需要的朋友查詢!

頁面運行效果如下

“產生DataTable”的作用就是在內在中建立一個DataTablle 然後使用Repeater顯示

 protected void btnLoadDt_Click(object sender, EventArgs e)
    {
        BindData(LoadDataTable());
    }
    //建立DataTable
    private DataTable LoadDataTable()
    {
        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("userName");
        dt.Columns.Add(dc);
        dc = new DataColumn("userSex");
        dt.Columns.Add(dc);

        DataRow dr = dt.NewRow();
        dr[0] = "fengyan";
        dr[1] = "male";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr[0] = "efly";
        dr[1] = "male";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr[0] = "楚旋";
        dr[1] = "male";
        dt.Rows.Add(dr);

        return dt;
    }

點擊DataTablle匯出Excel即可將該DataTable 內容匯出到指定的Excel中。相關代碼如下:

protected void btnExportExcel_Click(object sender, EventArgs e)
    {
        //得到需要匯入Excel的DataTable
        DataTable dt = LoadDataTable();
        //將其列名添加進去! (這一步注意是為了方便以後將該Excel匯入記憶體表中 自動建立列名用。)
        DataRow dr = dt.NewRow();
        dr[0] = "userName";
        dr[1] = "userSex";
        dt.Rows.InsertAt(dr, 0);

        //執行個體化一個Excel助手工具類
        ExcelHelper ex = new ExcelHelper();
        //匯入所有!(從第一行第一列開始)
        ex.DataTableToExcel(dt, 1, 1);
        //匯出Excel儲存的路徑!
        ex.OutputFilePath = txtExcelPath.Text;
        ex.OutputExcelFile();
    }

運行後開啟產生的Excel如下:

已經將內容匯出到Excel。現在在其中添加一行內容
 
如果要將該Excel再讀取到DataTable中比較簡單,可以使用ADO.NET
Excel匯入DataTable事件代碼如下:

 protected void btnExcelToDataTable_Click(object sender, EventArgs e)
    {
        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtFromExcel.Text + ";Extended Properties=Excel 8.0";
        //連結Excel
        OleDbConnection cnnxls = new OleDbConnection(strConn);
        //讀取Excel裡面有 表Sheet1
        OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);
        DataSet ds = new DataSet();
        //將Excel裡面有表內容裝載到記憶體表中!
        oda.Fill(ds);
        DataTable dt = ds.Tables[0];
        BindData(dt);
    }

運行後頁面如下:

可以看到從Excel又讀回資料並且自動綁定到Repeater上,我們增加的一行資料也正確顯示了!
之所以可以正確綁定出來,是因為我們在匯出的時候在Excel最上行添加了一行列名,所以可以對應綁定!
實際中更多的是資料庫和Excel的互操作!本文講到DataTable,從DataTable到資料庫的轉換也是容易的!
資料從Excel匯入到DataTable後,我們可以通過編寫少量代碼即可將資料 添加或更新回資料庫!這也是可以的!

本範例程式碼下載/Files/eflylab/ExcelHelper.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.