小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ASP.NET C# DataTable與Excel互操作示例

 醉人說(shuō)夢(mèng) 2014-08-04

前幾天朋友公司開(kāi)發(fā)需要用到Excel的導(dǎo)入導(dǎo)出,需要通過(guò)Web將數(shù)據(jù)庫(kù)中的內(nèi)容與Excel互導(dǎo)!問(wèn)到我,自己以前做過(guò),網(wǎng)上很多類(lèi)似的解決方案都是使用類(lèi)似DataGrid或GridView這樣的控件直接導(dǎo)入到Excel,方便,但不是很實(shí)用,有時(shí)候甚至導(dǎo)出的Excel并不是我們需要的格式!記得曾經(jīng)聽(tīng)邵志東老師講過(guò)ASP.NET下的自動(dòng)化操作。但一時(shí)又沒(méi)找到相關(guān)的代碼。在這里我將自己的示例在這貼出,以方便有自己和以后有這方面需要的朋友查詢(xún)!

頁(yè)面運(yùn)行效果如下

“生成DataTable”的作用就是在內(nèi)在中創(chuàng)建一個(gè)DataTablle 然后使用Repeater顯示

 protected void btnLoadDt_Click(object sender, EventArgs e)
    {
        BindData(LoadDataTable());
    }
    //創(chuàng)建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;
    }

點(diǎn)擊DataTablle導(dǎo)出Excel即可將該DataTable 內(nèi)容導(dǎo)出到指定的Excel中。相關(guān)代碼如下:
protected void btnExportExcel_Click(object sender, EventArgs e)
    {
        //得到需要導(dǎo)入Excel的DataTable
        DataTable dt = LoadDataTable();
        //將其列名添加進(jìn)去! (這一步注意是為了方便以后將該Excel導(dǎo)入內(nèi)存表中 自動(dòng)創(chuàng)建列名用。)
        DataRow dr = dt.NewRow();
        dr[0] = "userName";
        dr[1] = "userSex";
        dt.Rows.InsertAt(dr, 0);

        //實(shí)例化一個(gè)Excel助手工具類(lèi)
        ExcelHelper ex = new ExcelHelper();
        //導(dǎo)入所有!(從第一行第一列開(kāi)始)
        ex.DataTableToExcel(dt, 11);
        //導(dǎo)出Excel保存的路徑!
        ex.OutputFilePath = txtExcelPath.Text;
        ex.OutputExcelFile();
    }
運(yùn)行后打開(kāi)生成的Excel如下:

已經(jīng)將內(nèi)容導(dǎo)出到Excel?,F(xiàn)在在其中添加一行內(nèi)容
 
如果要將該Excel再讀取到DataTable中比較簡(jiǎn)單,可以使用ADO.NET
Excel導(dǎo)入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里面有表內(nèi)容裝載到內(nèi)存表中!
        oda.Fill(ds);
        DataTable dt = ds.Tables[0];
        BindData(dt);
    }
運(yùn)行后頁(yè)面如下:

可以看到從Excel又讀回?cái)?shù)據(jù)并且自動(dòng)綁定到Repeater上,我們?cè)黾拥囊恍袛?shù)據(jù)也正確顯示了!
之所以可以正確綁定出來(lái),是因?yàn)槲覀冊(cè)趯?dǎo)出的時(shí)候在Excel最上行添加了一行列名,所以可以對(duì)應(yīng)綁定!
實(shí)際中更多的是數(shù)據(jù)庫(kù)和Excel的互操作!本文講到DataTable,從DataTable到數(shù)據(jù)庫(kù)的轉(zhuǎn)換也是容易的!
數(shù)據(jù)從Excel導(dǎo)入到DataTable后,我們可以通過(guò)編寫(xiě)少量代碼即可將數(shù)據(jù) 添加或更新回?cái)?shù)據(jù)庫(kù)!這也是可以的!

本示例代碼下載/Files/eflylab/ExcelHelper.rar

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多