前幾天朋友公司開發需要用到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