ASP.NET .NET Framework 4.0方法上传Excel然后将Excel表格数据读取到数据库中的方法。
我用的是OleDb方法,数据库为MySQL。然后.NET Framework 4.0以下应该适用
先说总结,引用头文件,方法和ASP.NET中数据库获取信息填充到服务器控件中方式是一样的,通过适配方法获取数据集,再填充到Dataset或者DataTable数据集中,然后再拿出来使用。
首先,第一步,先引用头文件
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.OleDb;
上传文件的方法有很多,我用的是先判断文件格式然后再将其放入绝对路径中。我是先上传后再将路径存到MySQL中,但是可能对于上传失败没有做很好判断,欢迎补充。
string filename = FileUpload1.FileName;
string nametession = filename.Substring(filename.LastIndexOf(".") + 1);//获取后缀名
string savemap = Server.MapPath("你的文件名") + filename;//路径名
if (nametession.ToLower() == "xlsx" || nametession.ToLower() == "xls")
{
FileUpload1.PostedFile.SaveAs(savemap);//保存到绝对路径
}
else
{
//自己写喜欢的警告,提示....
}
上传后再运用OleDb方法读取数据。
string excelcon = "Provider=Microsoft.Ace.OleDb.12.0;Data Source="+savemap+";Extended Properties='Excel 12.0;HDR=Yes'";
// 注意,
这里需要下载Microsoft Access Database Engine,
微软官网打开下载(一般打开没问题)
OleDbConnection olcon = new OleDbConnection(excelcon);
OleDbDataAdapter oleqa = new OleDbDataAdapter("select * from [Sheet1$]", olcon);//注意,Data Source数据源要填写对,否则查询语句会报错,Sheet1就是表1的意思,不清楚的打开一个Excel看看左下角
DataTable dt = new DataTable();//可以用DataSet,一样的,虽然DataTable速度快,但是一般小型程序也看不出区别
oleqa.Fill(dt);//填充
olcon.Close();
oleqa.Dispose();
数据库读取方法,与从数据库读取到服务器控件一样,不过要反过来,先读取前面数据集后面执行command(命令),这里对象要手动释放,应该可以用using方法,自己加就行
string mycon = "Data Source=数据源(连接);User ID=自己数据库ID;Password=XX;DataBase=数据库名称";
MySqlConnection con = new MySqlConnection(mycon);
for (int i = 0; i < dt.Rows.Count; i++)
{
con.Open();
try{
string strsql = "INSERT INTO a(id,name,sex)VALUES";
strsql += "('" + dt.Rows[i][X].ToString() + "','";
strsql += dt.Rows[i][X].ToString() + "','";
strsql += dt.Rows[i][X].ToString() + "')";//X代表列数,你EXCEL表有几列,就写几列,注意SQL语句的写法,字符要加' '(单引号)。
MySqlCommand cmd = new MySqlCommand(strsql, con);
cmd.ExecuteReader();
cmd.Dispose();
con.Close();
}
}
con.Close();
con.Dispose();
}
这个对于ASP.NET新手,在校刚接触的学生在做一些成绩管理系统或者图书管理系统等等关于将Excel表格数据传到数据库比较合适。