采用OLEDB方式將Excel文件上傳到服務器指定的臨時目錄,並讀取Excel文件內容保存到服務器的數據庫中。
開發環境:VS2005, ASP.Net, C#, SQL2005
頁面代碼 :

<table width="100%">

<tr>

<td height="28" bgcolor="#5BB5D2">

<div align="center" class="cubai9pt">

酒店基本信息Excel導入</div>

</td>

</tr>

<tr>

<td valign="top">

<table width="100%" cellspacing="0">

<tr bgcolor="#ffffff" class="song">

<td height="30">

<div align="center">

Excel酒店文件:<ASP:FileUpload ID="FileUpload1" runat="server" Width="583px" /></div>

</td>

<td height="30" colspan="3">

<span class="song">

<input name="Submit" type="submit" class="an" value="保存" id="SaveInfo" runat="server"

onserverclick="SaveInfo_ServerClick" /></span></td>

</tr>

</table>

</td>

</tr>

<tr>

<td height="28" >

<div align="center" class="red">

注意:在沒有出現導入成功界面之前,請不要刷新該頁面!</div>

</td>

</tr>

</table>
頁面類代碼:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Collections.Generic;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using BILL;

using Model;

using Component;

using System.IO;

using System.Reflection;

using System.Data.OleDb;


public partial class Admin_Hotel_UploadExcelHotelRoom : System.Web.UI.Page


...{

protected void Page_Load(object sender, EventArgs e)


...{

}


protected void SaveInfo_ServerClick(object sender, EventArgs e)


...{

string file = "";


if (FileUpload1.HasFile)


...{

file = System.Web.HttpContext.Current.Request.MapPath("~/temp/") + CommonSet.CreateRandFileName(FileUpload1.FileName);

FileUpload1.SaveAs(file);

}

else


...{

Page.RegisterStartupScript("alert", "<script>alert(''請選擇Excel文件!!'');</script>");

return;

}


if (!File.Exists(file))


...{

Response.Write("<script language=''Javascript''>window.alert(''Excel文件上傳失敗!'');</script>");

return;

}

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + file + ";" + "Extended PropertIEs=Excel 8.0;";

OleDbConnection conn = null;

DataSet ds = null;

try


...{

conn = new OleDbConnection(strConn);

conn.Open();


string strExcel = "";

OleDbDataAdapter myCommand = null;


strExcel = "select * from [sheet1$]";

myCommand = new OleDbDataAdapter(strExcel, strConn);

ds = new DataSet();

myCommand.Fill(ds, "table1");

}

catch (Exception x)


...{

if State == ConnectionState.Open)


...{

conn.Close();

}

File.Delete(file);

Page.RegisterStartupScript("alert", "<script>alert(''Excel文件格式錯誤!'');</script>");

return;

}


//IList<HotelAddin> info = new List<HotelAddin>();

IList<HotelRoomInfo> info = new List<HotelRoomInfo>();

IList<string> lBed = new List<string>();


try


...{

for (int i = 0; i < ds.Tables["table1"].Rows.Count; i++)


...{

HotelRoomInfo temp = new HotelRoomInfo();


string tt =ds.Tables["table1"].Rows[i].ItemArray.GetValue(0).ToString();

if ((tt == null) || (tt.Trim() == ""))

break;

temp.HotelId = ds.Tables["table1"].Rows[i].ItemArray.GetValue(0).ToString();

temp.RoomId = ds.Tables["table1"].Rows[i].ItemArray.GetValue(2).ToString();

temp.RoomName = ds.Tables["table1"].Rows[i].ItemArray.GetValue(3).ToString();

temp.TypeName = ds.Tables["table1"].Rows[i].ItemArray.GetValue(4).ToString();

temp.IsDisp = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(5).ToString());

temp.IsHave = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(6).ToString());

temp.IsKitchen = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(7).ToString());

temp.IsAddinBed = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(8).ToString());

temp.NormalNo = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(9).ToString());

temp.MaxNo = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(10).ToString());

temp.IsRecommend = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(11).ToString());

temp.MemPointRate = Convert.ToDecimal(ds.Tables["table1"].Rows[i].ItemArray.GetValue(12).ToString());

temp.ExploitRate = Convert.ToDecimal(ds.Tables["table1"].Rows[i].ItemArray.GetValue(13).ToString());

temp.AffiliateRate = Convert.ToDecimal(ds.Tables["table1"].Rows[i].ItemArray.GetValue(14).ToString());

temp.IsBreakfast = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(15).ToString());

temp.MinNights = Convert.ToInt32(ds.Tables["table1"].Rows[i].ItemArray.GetValue(16).ToString());

temp.Remark = ds.Tables["table1"].Rows[i].ItemArray.GetValue(17).ToString();

temp.LastUpdateTime = DateTime.Now;

string bed = ds.Tables["table1"].Rows[i].ItemArray.GetValue(18).ToString();


info.Add(temp);

lBed.Add(bed);

}


conn.Close();


//保存到數據庫

bool bRet = true;

BillHotelRoom billRoom = new BillHotelRoom();

BillHotelRoomBed billBed = new BillHotelRoomBed();

for (int i = 0; i < info.Count; i++)


...{

try


...{

//billRoom.AddHotelRoom(

IList<HotelRoomBedInfo> lBedInfo = new List<HotelRoomBedInfo>();



string[] hBed = lBed[i].Split(new Char[] ...{ ''#'' });

for (int j = 0; j < hBed.Length; j++)


...{

HotelRoomBedInfo fac = new HotelRoomBedInfo();

fac.HotelId = info[i].HotelId;

fac.RoomId = info[i].RoomId;

fac.BedInfo = hBed[j];

lBedInfo.Add(fac);

}


if( billRoom.AddHotelRoom(info[i], lBedInfo) == false )


...{

bRet = false;

break;

}

}

catch (Exception dddd)


...{

bRet = false;

break;

}

}



if (bRet == true)


...{

File.Delete(file);

Page.RegisterStartupScript("alert", "<script>alert(''導入成功!'');</script>");

return;


}

else


...{

File.Delete(file);

Page.RegisterStartupScript("alert", "<script>alert(''導入失敗,請檢查資料導入文件!'');</script>");

return;

}

}

catch (Exception ex)


...{

string mes = "<script language=''Javascript''>window.alert(''" + ex.Message + "'');</script>";

Response.Write(mes);

return;

}

}

}

