asp.net中Excel导入SQL
来源:互联网 发布:abp源码分析 编辑:程序博客网 时间:2024/05/16 09:37
asp.net中Excel导入SQL
这是我做的一个在asp.net中,将excel数据导入sql的实例,数据导入时分3种形式:追加导入、覆盖导入、清空导入,希望能对新手有点帮助。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace GZYYWZ.Adm
{
///<summary>
/// Adm_Score_Upload 的摘要说明。
///</summary>
public class Adm_Score_Upload : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputFile File_Name;
protected System.Web.UI.HtmlControls.HtmlInputButton Button_Old_Up;
protected System.Web.UI.HtmlControls.HtmlInputRadioButton Radio1;
protected System.Web.UI.HtmlControls.HtmlInputRadioButton Radio2;
protected System.Web.UI.HtmlControls.HtmlInputRadioButton Radio3;
protected OA.Config Conn = new OA.Config();
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
if(Session["User_Name"] == null || Session["module_authority"] == null || Session["module_authority"].ToString().IndexOf("13",0) < 0)
this.Response.Redirect("Adm_Login.aspx");
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///设计器支持所需的方法 - 不要使用代码编辑器修改
///此方法的内容。
///</summary>
private void InitializeComponent()
{
this.Button_Old_Up.ServerClick += new System.EventHandler(this.Button_Old_Up_ServerClick);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button_Old_Up_ServerClick(object sender, System.EventArgs e)
{
string File_Name = this.File_Name.PostedFile.FileName;
int File_Size = this.File_Name.PostedFile.ContentLength;
if (File_Name.Length!=0 && File_Size>0)
{
string File_ExName = File_Name.Substring(File_Name.LastIndexOf(".")+1);//扩展名
if (File_ExName!="xls")
{
Conn.MessageBox(this,"不是有效的EXCEL文件!");
return;
}
else
{
//上传EXCEL文件到ExcelFile目录
DateTime now = DateTime.Now;
string NewName=now.ToShortDateString()+now.Hour.ToString()+now.Minute.ToString()+now.Second.ToString()+"."+File_ExName;
string filePath="../ExcelFile/"+NewName;
this.File_Name.PostedFile.SaveAs(Server.MapPath(@filePath));
//获取EXCEL文件,执行导入
string excelConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(filePath) + ";Extended Properties=Excel 8.0";
string excelCmdstr=string.Format("select * from [Sheet1$]");
string Error="";
try
{
OleDbConnection oleDbConnection = new OleDbConnection(excelConnect);
oleDbConnection.Open();
OleDbCommand excelCmd=new OleDbCommand(excelCmdstr,oleDbConnection);
OleDbDataAdapter excelDa=new OleDbDataAdapter(excelCmd);
DataTable edt=new DataTable();
excelDa.Fill(edt);
string sql="";
string chk_sql="",chk_code="";
string Input_Date=DateTime.Now.ToString("yyyy-MM-dd");
int i=2;//电子表格行号,含有表头,所以从2开始
if (this.Radio1.Checked==true)
{
//追加导入
foreach (DataRow dr in edt.Rows)
{
try
{
string Code=dr[0].ToString().Trim().Replace("'","''");
if (Code.Length>30)
{
Error += "第"+i+"行0列,字符超长,最大长度为30位<BR>";
}
string Name=dr[1].ToString().Trim().Replace("'","''");
if (Name.Length>20)
{
Error += "第"+i+"行1列,字符超长,最大长度为20位<BR>";
}
string Sex=dr[2].ToString().Trim().Replace("'","''");
if (Sex.Length>4)
{
Error += "第"+i+"行2列,字符超长,最大长度为4位<BR>";
}
string Birth=dr[3].ToString().Trim().Replace("'","''");
if (Birth.Length>10)
{
Error += "第"+i+"行3列,字符超长,最大长度为10位<BR>";
}
string Unit=dr[4].ToString().Trim().Replace("'","''");
if (Unit.Length>50)
{
Error += "第"+i+"行4列,字符超长,最大长度为50位<BR>";
}
int Test_Year=Convert.ToInt32(dr[5].ToString().Trim().Replace("'","''"));
int Test_Month=Convert.ToInt32(dr[6].ToString().Trim().Replace("'","''"));
decimal Score=Convert.ToDecimal(dr[7].ToString().Trim().Replace("'","''"));
string Grade=dr[8].ToString().Trim().Replace("'","''");
if (Grade.Length>15)
{
Error += "第"+i+"行8列,字符超长,最大长度为15位<BR>";
}
string Class=dr[9].ToString().Trim().Replace("'","''");
if (Class.Length>15)
{
Error += "第"+i+"行9列,字符超长,最大长度为15位<BR>";
}
string Content=dr[10].ToString().Trim().Replace("'","''");
if (Code!="" && Code!=null)
{
chk_sql="select count(Code) from Achievement where Code='"+Code+"'";
chk_code=Conn.ExecuteScalar_return_String(chk_sql);
if (chk_code=="" || chk_code=="0")
{
sql += "insert Achievement(Code,Name,Sex,Birth,Unit,Test_Year,Test_Month,Score,Grade,Class,Content,Input_Date) values ('"+Code+"','"+Name+"','"+Sex+"','"+Birth+"','"+Unit+"',"+Test_Year+","+Test_Month+","+Score+",'"+Grade+"','"+Class+"','"+Content+"','"+Input_Date+"');";
}
}
}
catch(Exception e1)
{
Error += "第"+i+"行:"+e1.Message+"<br>";
throw new ApplicationException(Error);
}
i++;
}
}
else if (this.Radio2.Checked==true)
{
//覆盖导入
foreach (DataRow dr in edt.Rows)
{
try
{
string Code=dr[0].ToString().Trim().Replace("'","''");
if (Code.Length>30)
{
Error += "第"+i+"行0列,字符超长,最大长度为30位<BR>";
}
string Name=dr[1].ToString().Trim().Replace("'","''");
if (Name.Length>20)
{
Error += "第"+i+"行1列,字符超长,最大长度为20位<BR>";
}
string Sex=dr[2].ToString().Trim().Replace("'","''");
if (Sex.Length>4)
{
Error += "第"+i+"行2列,字符超长,最大长度为4位<BR>";
}
string Birth=dr[3].ToString().Trim().Replace("'","''");
if (Birth.Length>10)
{
Error += "第"+i+"行3列,字符超长,最大长度为10位<BR>";
}
string Unit=dr[4].ToString().Trim().Replace("'","''");
if (Unit.Length>50)
{
Error += "第"+i+"行4列,字符超长,最大长度为50位<BR>";
}
int Test_Year=Convert.ToInt32(dr[5].ToString().Trim().Replace("'","''"));
int Test_Month=Convert.ToInt32(dr[6].ToString().Trim().Replace("'","''"));
decimal Score=Convert.ToDecimal(dr[7].ToString().Trim().Replace("'","''"));
string Grade=dr[8].ToString().Trim().Replace("'","''");
if (Grade.Length>15)
{
Error += "第"+i+"行8列,字符超长,最大长度为15位<BR>";
}
string Class=dr[9].ToString().Trim().Replace("'","''");
if (Class.Length>15)
{
Error += "第"+i+"行9列,字符超长,最大长度为15位<BR>";
}
string Content=dr[10].ToString().Trim().Replace("'","''");
if (Code!="" && Code!=null)
{
chk_sql="select count(Code) from Achievement where Code='"+Code+"'";
chk_code=Conn.ExecuteScalar_return_String(chk_sql);
if (chk_code=="" || chk_code=="0")
{
sql += "insert Achievement(Code,Name,Sex,Birth,Unit,Test_Year,Test_Month,Score,Grade,Class,Content,Input_Date) values ('"+Code+"','"+Name+"','"+Sex+"','"+Birth+"','"+Unit+"',"+Test_Year+","+Test_Month+","+Score+",'"+Grade+"','"+Class+"','"+Content+"','"+Input_Date+"');";
}
else
{
sql += "update Achievement set Code='"+Code+"',Name='"+Name+"',Sex='"+Sex+"',Birth='"+Birth+"',Unit='"+Unit+"',Test_Year="+Test_Year+",Test_Month="+Test_Month+",Score="+Score+",Grade='"+Grade+"',Class='"+Class+"',Content='"+Content+"',Input_Date='"+Input_Date+"' where Code='"+Code+"';";
}
}
}
catch(Exception e1)
{
Error += "第"+i+"行:"+e1.Message+"<br>";
throw new ApplicationException(Error);
}
i++;
}
}
else if (this.Radio3.Checked==true)
{
//清空导入
string del_sql="delete from Achievement";
Conn.ExecuteNonQuery_Sql(del_sql);//删除数据库中所有记录
foreach (DataRow dr in edt.Rows)
{
try
{
string Code=dr[0].ToString().Trim().Replace("'","''");
if (Code.Length>30)
{
Error += "第"+i+"行0列,字符超长,最大长度为30位<BR>";
}
string Name=dr[1].ToString().Trim().Replace("'","''");
if (Name.Length>20)
{
Error += "第"+i+"行1列,字符超长,最大长度为20位<BR>";
}
string Sex=dr[2].ToString().Trim().Replace("'","''");
if (Sex.Length>4)
{
Error += "第"+i+"行2列,字符超长,最大长度为4位<BR>";
}
string Birth=dr[3].ToString().Trim().Replace("'","''");
if (Birth.Length>10)
{
Error += "第"+i+"行3列,字符超长,最大长度为10位<BR>";
}
string Unit=dr[4].ToString().Trim().Replace("'","''");
if (Unit.Length>50)
{
Error += "第"+i+"行4列,字符超长,最大长度为50位<BR>";
}
int Test_Year=Convert.ToInt32(dr[5].ToString().Trim().Replace("'","''"));
int Test_Month=Convert.ToInt32(dr[6].ToString().Trim().Replace("'","''"));
decimal Score=Convert.ToDecimal(dr[7].ToString().Trim().Replace("'","''"));
string Grade=dr[8].ToString().Trim().Replace("'","''");
if (Grade.Length>15)
{
Error += "第"+i+"行8列,字符超长,最大长度为15位<BR>";
}
string Class=dr[9].ToString().Trim().Replace("'","''");
if (Class.Length>15)
{
Error += "第"+i+"行9列,字符超长,最大长度为15位<BR>";
}
string Content=dr[10].ToString().Trim().Replace("'","''");
if (Code!="" && Code!=null)
{
sql += "insert Achievement(Code,Name,Sex,Birth,Unit,Test_Year,Test_Month,Score,Grade,Class,Content,Input_Date) values ('"+Code+"','"+Name+"','"+Sex+"','"+Birth+"','"+Unit+"',"+Test_Year+","+Test_Month+","+Score+",'"+Grade+"','"+Class+"','"+Content+"','"+Input_Date+"');";
}
}
catch(Exception e1)
{
Error += "第"+i+"行:"+e1.Message+"<br>";
throw new ApplicationException(Error);
}
i++;
}
}
else
{
Conn.MessageBox(this,"请选择导入方式!");
return;
}
//删除临时的EXCEL文件
oleDbConnection.Close();
if (System.IO.File.Exists(Server.MapPath(filePath)))
{
File.Delete(Server.MapPath(filePath));
}
if (sql!="" && sql!=null)
{
Conn.ExecuteNonQuery_Sql(sql);
Conn.MessageBox_alert_refurbish(this,"导入成功!");
}
else
{
Conn.MessageBox_alert_refurbish(this,"没有符合条件的数据或数据为空!");
return;
}
}
catch(Exception ex)
{
//Response.Write(Error);
Response.Write("<BR>");
Response.Write(ex.Message);
// return;
}
//导入结束
}
}
else
{
Conn.MessageBox(this,"你没有选择文件或文件不存在!");
return;
}
}
/// <summary>
/// 将Excel中的数据读入DataSet
/// </summary>
/// <param name="fileName">文件路径和文件名</param>
/// <returns>DataSet</returns>
private DataSet ReadExcel(string fileName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ fileName +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel="select * from [sheet1$]";//从默认的sheet1表中读入数据
myCommand = new OleDbDataAdapter(strExcel, strConn);
DataSet ds = new DataSet();
myCommand.Fill(ds,"Data");
conn.Close();
return ds;
}
}
}
- asp.net中Excel导入SQL
- asp.net中Excel导入SQL
- asp.net中excel导入ms sql数据库
- asp.net中excel导入ms sql数据库
- Asp.net中关于excel文件批量导入SQL Server数据表
- asp.net中Excel导入sql server数据库
- Asp.net中Excel数据导入到SQL Server
- ASP.NET Excel数据导入SQL Server
- ASP.NET导入Excel到数据库(SQL)
- ASP.NET导入Excel到数据库(SQL)
- asp.net Excel导入数据到sql
- ASP.NET 将 excel 导入 SQL
- ASP.NET导入Excel到数据库(SQL)
- ASP.NET导入Excel到数据库(SQL)
- Asp.net中Excel文件导入sqlServer
- asp.net中Excel的导入导出
- ASP.NET Excel导入SQLserver 数据库中
- ASP.NET Excel导入
- javascript 获得全选
- oracle常用命令及脚本
- 用Mencoder进行任意视频格式转换成flv
- JSP中计算页面执行(处理)时间
- 画图
- asp.net中Excel导入SQL
- SQL按条件统计
- ADC0804数模转换
- .NET 数据访问
- C/C++标准库学习资料(c/c++接口转换)
- 画柱形图的方法
- LCD16X2液晶显示模块
- 空虚无聊的工作
- 水印效果