<tr>
<td width="16%" class="c_tdleft">
上传Excel文件:
</td>
<td width="70%" class="c_td">
<asp:FileUpload ID="FU_Excel" runat="server" Width="202" />
<asp:Button ID="Button2" runat="server" Text="导入Excel数据" οnclick="Button2_Click" />
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
</td>
</tr>
//一个固定的访问Excel方法
//访问Excel文件
public static DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + System.Web.HttpContext.Current.Server.MapPath(Path) + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table1");
return ds;
}
//上传Excel到服务器之后,再解析到服务器显示数据
protected void Button2_Click(object sender, EventArgs e)
{
if (FU_Excel.HasFile)
{
//判断文件是否小于10Mb
if (FU_Excel.PostedFile.ContentLength < 10485760)
{
try
{
//上传文件并指定上传目录的路径
FU_Excel.PostedFile.SaveAs(Server.MapPath("~/admin/TelePhoneExcel/") //在服务器的路径,上传Excel的路径
+ FU_Excel.FileName);
/*注意->这里为什么不是:FileUpLoad1.PostedFile.FileName
* 而是:FileUpLoad1.FileName?
* 前者是获得客户端完整限定(客户端完整路径)名称
* 后者FileUpLoad1.FileName只获得文件名.
*/
//当然上传语句也可以这样写(貌似废话):
//FileUpLoad1.SaveAs(@"D:\"+FileUpLoad1.FileName);
lblMessage.Text = "上传成功!";
}
catch (Exception ex)
{
lblMessage.Text = "出现异常,无法上传!";
//lblMessage.Text += ex.Message;
}
}
else
{
lblMessage.Text = "上传文件不能大于10MB!";
}
}
else
{
lblMessage.Text = "尚未选择文件!";
}
//解析Excel
DataSet ds = new DataSet();
string excelPath = "../TelePhoneExcel/"+FU_Excel.FileName; //获取Excel路径
ds = buss.ExcelToDS(excelPath); //调用上面那个方法解析Excel
string telePhone="";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
telePhone+= ds.Tables[0].Rows[i][0].ToString()+",";//取第i行的第0列的值
}
txtProduct_name.Text = telePhone.Substring(0,telePhone.Length-1); //截取逗号
TextBox2.Text = ds.Tables[0].Rows.Count.ToString(); //手机号码个数
}