asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法
本文实例讲述了asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法。分享给大家供大家参考,具体如下:
publicDataSetGetDataSet(stringfilePath)
{
stringConnstr=string.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource='"+filePath+"';ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1'");
OleDbConnectionConn=newOleDbConnection(Connstr);
//创建ArrayList对象存放所有sheetname
ArrayListsheetNamelist=newArrayList();
//获取配置Excel中sheet总数(这里是根据项目需求配置的)如果需要导入Excel表格所有sheet数据则将此代码删除
intsheetCount=Convert.ToInt32(ConfigurationManager.AppSettings["sheetCount"].ToString());
DataSetdsExcel=newDataSet();
try
{
if(Conn.State==ConnectionState.Closed)
{
Conn.Open();
}
DataTabledtExcelSchema=Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobject[]{null,null,null,"Table"});
stringsheetName=string.Empty;
if(dtExcelSchema.Rows.Count>sheetCount)
{
Page.RegisterStartupScript("","<mce:scripttype="text/javascript"><!--
alert('很抱歉!你上传Excel文件sheet总数过多不能大于10个sheet..!!')
//--></mce:script>");
return;
}
else
{
for(intj=0;j<dtExcelSchema.Rows.Count;j++)
{
sheetName=String.Format("Sheet{0}$",j+1);
sheetNamelist.Add(sheetName);
}
}
}
catch(Exceptionex)
{
thrownewException(ex.Message.ToString(),ex);
}
finally
{
Conn.Close();
}
try
{
stringstrSQL=string.Empty;
for(inti=0;i<sheetNamelist.Count;i++)
{
strSQL="select*from["+sheetNamelist[i].ToString()+"]";
OleDbDataAdapterda=newOleDbDataAdapter(strSQL,Conn);
DataTabledtExcel=newDataTable(sheetNamelist[i].ToString());
da.Fill(dtExcel);
dsExcel.Tables.Add(dtExcel);
}
returndsExcel;
}
catch(Exceptionex)
{
thrownewException(ex.Message.ToString(),ex);
}
}
//从Excel表中取出数据将取出来的数据插入到数据库中
publicvoidInsertData(DataSetds){
stringstrSQL=string.Empty;
if(ds.Tables[0].Rows.Count>0)
{
for(intj=0;j<ds.Tables.Count;j++)
{
for(inti=0;i<ds.Tables[j].Rows.Count;i++)
{
DataRowdr=ds.Tables[j].Rows[i];
//组名
stringgroupname=dr["组名"].ToString().Trim();
//联系人
stringcontactName=dr["联系人"].ToString().Trim();
//手机号码
stringmobile=dr["手机号码"].ToString().Trim();
//公司名称
stringcompanyName=dr["公司名称"].ToString().Trim();
//公办号码
stringofficeNum=dr["办公号码"].ToString().Trim();
//家庭号码
stringhomeNum=dr["家庭号码"].ToString().Trim();
//邮箱
stringEmail=dr["邮箱"].ToString().Trim();
//联系地址
stringaddress=dr["联系地址"].ToString().Trim();
//创建时间
stringcreatetime=dr["创建时间"].ToString().Trim();
//性别
stringSex=dr["性别"].ToString().Trim();
//手机套餐类型
stringmobileType=dr["手机套餐类型"].ToString().Trim();
//是否开通通信助理
stringisOpen=dr["是否开通通信助理"].ToString().Trim();
//SQL语句
strSQL="insertintomsm_Excel(groupName,Mobile,Name,companyName,officeNum,homeNum,Emial,address,Createtime,Sex,mobileType,isOpen)values('"+groupname+"','"+mobile+"','"+contactName+"','"+companyName+"','"+officeNum+"','"+homeNum+"','"+Email+"','"+address+"','"+createtime+"','"+Sex+"','"+mobileType+"','"+isOpen+"')";
try
{
intn=SQLHelper.SqlDataExecute(strSQL);
if(n>0)
{
Page.RegisterStartupScript("","<mce:scripttype="text/javascript"><!--
alert('数据插入成功!')
//--></mce:script>");
Label1.Text="一共成功插入"+ds.Tables[j].Rows.Count.ToString()+"条数据";
}
else
{
Page.RegisterStartupScript("","<mce:scripttype="text/javascript"><!--
alert('服务器繁忙!请稍候再试..!')
//--></mce:script>");
}
}
catch(Exceptionex)
{
throwex;
}
}
}
}
else{
Page.RegisterStartupScript("","<mce:scripttype="text/javascript"><!--
alert('此Excel文件中无数据!!!')
//--></mce:script>");
}
}
//调用
//获取上传文件名
stringfileName=FileUpload1.FileName;
//判断是否存在上传文件
if(FileUpload1.PostedFile.FileName.Length==0){
Page.RegisterStartupScript("","<mce:scripttype="text/javascript"><!--
alert('请选择你要上传的Excel文件!!')
//--></mce:script>");
}
//判断上传的文件类型是否正确
elseif(!Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xls")&&!Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xlsx"))
{
Page.RegisterStartupScript("","<script>alert('很抱歉!你上传的文件类型不正确!只能上传Excel类型的文件!')</script.");
}
else
{
//获取上传的文件路径
filePath=Server.MapPath("TxtFiles//")+DateTime.Now.ToString("yyyyMMddhhmmss")+fileName;
this.FileUpload1.PostedFile.SaveAs(filePath);
ds=GetDataSet(filePath);
InsertData(ds);
}
希望本文所述对大家asp.net程序设计有所帮助。