您的位置:首页 > 编程语言 > ASP

asp.net 导入excel表格

2015-06-09 11:01 656 查看
1、Excel表格

用户名密码年龄
aaaaaa11111118
bbbbbb11111119
2、.aspx页面

<input id="fileUp" type="file" runat="server" />

3、处理方法
protected void importExcel()
{
string LocalSaveFilePath = ""; //临时文件路径
try
{
string file = fileUp.Value;
string suffix = file.Substring(this.fileUp.Value.LastIndexOf('.') + 1);
if (!suffix.ToLower().Equals("xls") && !suffix.ToLower().Equals("xlsx"))
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), DateTime.Now.ToString(), "alert('文件格式不正确!请选择正确的excel文件!');", true);
return;
}

if (fileUp.PostedFile.ContentLength > 10485760)//1024*1024*10=10M,文件大小<10M
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), DateTime.Now.ToString(), "alert('文件太大!请选择10M以内的文件!');", true);
return;
}
//保存临时文件
string url = "/userfiles/temp/";
LocalSaveFilePath = Server.MapPath(url);
if (LocalSaveFilePath.Trim().Length > 0 && !Directory.Exists(LocalSaveFilePath))
{
Directory.CreateDirectory(LocalSaveFilePath);
}
string guid = Guid.NewGuid().ToString().Replace("-", "");
if (file.ToLower().EndsWith(".xls"))
{
LocalSaveFilePath = LocalSaveFilePath + guid + ".xls";
}
else if (file.ToLower().EndsWith(".xlsx"))
{
LocalSaveFilePath = LocalSaveFilePath + guid + ".xlsx";
}

fileUp.PostedFile.SaveAs(LocalSaveFilePath);

//连接Excel Str
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + LocalSaveFilePath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";

//链接并打开Excel
OleDbConnection cnnxls = new OleDbConnection(strConn);
cnnxls.Open();

//读取Excel里面有 表Sheet1
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);

//将Excel里面有表内容装载到内存表中!
DataSet ds = new DataSet();

try
{
oda.Fill(ds);
}
catch (Exception exc)
{
//删除临时文件
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
return;
}
finally
{
cnnxls.Close();
cnnxls = null;
}

//=================================相关校验,插入到数据库===================================
if (ds.Tables.Count > 0)
{
DataTable dt = ds.Tables[0];

//验证excel表格中,是否存在“用户名”列
if (!dt.Columns.Contains("用户名"))
{
//提示:不存在“用户名”列,excel格式不对,删除临时文件
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
return;
}
//验证excel表格中,是否存在“密码”列
if (!dt.Columns.Contains("密码"))
{
////提示:不存在“密码”列,excel格式不对,删除临时文件
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
return;
}
//验证excel表格中,是否存在“年龄”列
if (!dt.Columns.Contains("年龄"))
{
////提示:不存在“年龄”列,excel格式不对,删除临时文件
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
return;
}

if (dt.Rows.Count > 10000)
{
//提示:一次导入不能超过10000行
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
return;
}

for (int i = 0; i < dt.Rows.Count; i++)
{
string uname = dt.Rows[i]["用户名"].ToString().Trim();
string password = dt.Rows[i]["密码"].ToString().Trim();
string age = dt.Rows[i]["年龄"].ToString().Trim();

//添加到数据库
//...
//...
}
}
}
catch (Exception exc)
{
return;
}
//删除临时文件
if (File.Exists(LocalSaveFilePath))
File.Delete(LocalSaveFilePath);
}

程序可能有些问题(当然,只是可能,因为这是之前写的,简化了一下,还没测试。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息