protected void Button1_Click(object sender, EventArgs e)
if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (IsXls != ".xlsx")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数
string savePath = Server.MapPath(("/upfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = ExcelSqlConnection(savePath, filename); //调用自定义方法
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
}
else
{
//for (int i = 0; i < dr.Length; i++)
//{
//前面除了你需要在建立一个“upfiles”的文件夹外,其他的都不用管了,你只需要通过下面的方式获取Excel的值,然后再将这些值用你的方式去插入到数据库里面
//string title = dr[i]["姓名"].ToString();
//string linkurl = dr[i]["工号"].ToString();
//string categoryname = dr[i]["性别"].ToString();
//string customername = dr[i]["出生日期"].ToString();
//string str = ConfigurationManager.AppSettings["ConnectionString"];
//声明数据库连接
SqlConnection conn = new SqlConnection("连接字符串");
conn.Open();
//声明SqlBulkCopy ,using释放非托管资源
using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))
{
//一次批量的插入的数据量
sqlBC.BatchSize = 1000;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
sqlBC.BulkCopyTimeout = 60;
//設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。
sqlBC.NotifyAfter = 10000;
sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
//设置要批量写入的表
sqlBC.DestinationTableName = "location";
//locationID Subwaystation Subwaydistance Busstation Busline SurroundingEstate state EditUser EditDate
//自定义的datatable和数据库的字段进行对应
sqlBC.ColumnMappings.Add("城市", "CityId");
sqlBC.ColumnMappings.Add("行政区", "Area");
sqlBC.ColumnMappings.Add("楼盘名称", "Estate");
sqlBC.ColumnMappings.Add("东面临", "Eastfacing");
sqlBC.ColumnMappings.Add("南面临", "Southfacing");
sqlBC.ColumnMappings.Add("西面临", "Westfacing");
sqlBC.ColumnMappings.Add("北面临", "Northfacing");
sqlBC.ColumnMappings.Add("超市", "Supermarket");
sqlBC.ColumnMappings.Add("肉菜市场", "market");
sqlBC.ColumnMappings.Add("医院", "Hospital");
sqlBC.ColumnMappings.Add("银行", "Bank");
sqlBC.ColumnMappings.Add("学校", "School");
sqlBC.ColumnMappings.Add("公园", "Park");
sqlBC.ColumnMappings.Add("地铁线路", "metro");
sqlBC.ColumnMappings.Add("地铁站点", "Subwaystation");
sqlBC.ColumnMappings.Add("到地铁站时间", "Subwaydistance");
sqlBC.ColumnMappings.Add("公交车站", "Busstation");
sqlBC.ColumnMappings.Add("公交线路", "Busline");
sqlBC.ColumnMappings.Add("周边楼盘", "SurroundingEstate");
//sqlBC.ColumnMappings.Add("姓名", "name");
//sqlBC.ColumnMappings.Add("年龄", "age");
sqlBC.WriteToServer(dr);
//Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>");
//}
//Response.Write("<script>alert('Excle表导入成功!');</script>");
Response.Write("<scpript>alert('Excle表导入" + rowsnum + "!';</script>");
}
}
}
public static DataSet ExcelSqlConnection(string filepath, string tableName)
{
//string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
string strCon = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", filepath);
OleDbConnection ExcelConn = new OleDbConnection(strCon);
try
{
//string strCom = string.Format("SELECT * FROM [Sheet1$]");
string strCom = string.Format("SELECT * FROM [人工整理$]");
ExcelConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + tableName + "$]");
ExcelConn.Close();
return ds;
}
catch
{
ExcelConn.Close();
return null;
}
}