思路:
1、上传Excel文件到服务器
2、将Excel内容读取出来填充到DataTable中
3、将DataTable内容保存到数据库内。
(当然还可以先校验后帮到页面上,让用户再次确认要导入的数据。这里我省掉了,只列出详细的错误清单)
so easy。。。
实现:
首先要准备一个Excel模板。Excel第一行一定要写入你要导入的字段名称,名称可以用汉字,但只要你能和数据库字段对应起来用程序处理就可以了。
有必要的话在页面上写点说明,比如哪个字段一定要填写什么样的数据。当然程序异常处理还是要的。
1、前台页面代码
页面上就简单点放一个上传控件、一个导入的按钮。
2、后台代码
导入按钮事件
///
///上传保存到数据库
///
///
///
protectedvoidbtn_save_Click(object sender, EventArgs e)
{
ExcelUpload();
}
上传导入的一些方法
///
///文件上传方法
///
protectedvoidExcelUpload()
{
//存放文件路径
String filepath = "";
//存放文件扩展名
stringfileExtName = "";
//文件名
stringmFileName = "";
//服务器上的相对路径
stringmPath = "";
if (fu_excel.PostedFile.FileName != "")
{
//取得文件路径
filepath = fu_excel.PostedFile.FileName;
//取得文件扩展名
fileExtName = filepath.Substring(filepath.LastIndexOf(".") + 1);
//取得服务器上的相对路径
mPath = this.Request.PhysicalApplicationPath + "UpLoadFiles\\Excel\\";
//取得文件名
mFileName = filepath.Substring(filepath.LastIndexOf("\\") + 1);
//保存文件到指定目录
if (!Directory.Exists(mPath))
{
try
{
Directory.CreateDirectory(mPath);
}
catch
{
MessageBox.Show(this.Page, "服务器创建存放目录失败");
}
}
//如果文件已经存在则删除原来的文件
if (File.Exists(mPath + mFileName))
{
try
{
File.Delete(mPath + mFileName);
}
catch
{
MessageBox.Show(this.Page, "服务器上存在相同文件,删除失败。");
}
}
#region判断文件扩展名
//判断上传文件格式
Boolean fileOK = false;
if (fu_excel.HasFile)
{
String fileExtension = System.IO.Path.GetExtension(fu_excel.FileName).ToLower();
String[] allowedExtensions = { ".xls" };
for (inti = 0; i
///根据Excel文件路径读取Excel表中第一个表的内容
///
///Excel文件的物理路径
///DataSet
publicSystem.Data.DataTableGetList(stringFilePath)
{
stringconnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FilePath + ";" + "Extended Properties=Excel 8.0;";
stringstrSql = string.Empty;
//string workSheetName = Get_FistWorkBookName(FilePath);
//第一个工作表的名称。考虑到稳定性,就直接写死了。
stringworkSheetName = "Sheet1";
if (workSheetName != "")
{
strSql = "select * from [" + workSheetName + "$]";
try
{
继续阅读