问题描述
求救excel批量导入循环插入数据并删除重复的数据oracle已有的代码如下舍弃以下代码亦可求段循环插入数据的源代码publicstaticvoidphoto(DataTablezh){intcount=0;stringstrfields="";//列stringstrvalues="";//值stringfiled="";stringstrvalue="";for(inti=0;i<zh.Columns.Count;i++)//循环列名并插入数据列名较多{stringstrfiled=zh.Columns[i].ColumnName;strfields+=strfiled+",";strvalues+="@"+strfiled+",";}if(strfields!=""){strfields=strfields.Substring(0,strfields.LastIndexOf(","));strvalues=strvalues.Substring(0,strvalues.LastIndexOf(","));}try{OracleConnectionsqlconn=newOracleConnection(ConfigurationManager.AppSettings[connectdate.getconnect()]);sqlconn.Open();OracleDataAdapterda=newOracleDataAdapter();OracleCommandcmd=newOracleCommand();//建立InsertCommandda.InsertCommand=cmd;StringBuildersb=newStringBuilder("");cmd.CommandText=sb.ToString();sb.Append("INSERT"+casemessage+","+strfields+"VALUES()");sb.Append(strvalues+")");for(inti=0;i<zh.Columns.Count;i++){filed=zh.Columns[i].ColumnName;strvalue="@"+filed;OracleParameteroparam=newOracleParameter();oparam.ParameterName=strvalue;oparam.OracleType=DbTypeList[i];oparam.SourceVersion=DataRowVersion.Current;oparam.SourceColumn=filed;da.InsertCommand.Parameters.Add(oparam);}count=da.Update(zh);OracleOperatecon=newOracleOperate();//删除掉重复记录,在casemessage表中当casenumber相同时则认为该数据重复......stringsql="deletefromcasemessagewheretidnotin(selectmin(tid)fromcasemessagegroupbycasenumber)";con.sqlconn.Close();}catch(Exceptionex){count=0;}returncount;}
解决方案
解决方案二:
我顶别沉啊
解决方案三:
该回复于2011-12-12 14:47:01被版主删除
解决方案四:
木人啊
解决方案五:
解决方案六:
解决方案七:
try{if(!string.IsNullOrEmpty(FileUpload1.PostedFile.FileName)){if(!(".xls,.xlsx".Contains(Path.GetExtension(this.FileUpload1.PostedFile.FileName)))){this.ShowMessage("上传的文件不是EXCEL文件!请重新上传!");}else{fileName=Path.GetTempFileName();this.FileUpload1.PostedFile.SaveAs(fileName);stringconnectionString="Provider=Microsoft.ACE.OLEDB.12.0;"+"DataSource="+fileName+";"+"Extendedproperties=Excel12.0;";varsql="Select*from[Sheet1$]";DataSetds=newDataSet();OleDbDataAdapterdataAdapter=newOleDbDataAdapter(sql,connectionString);dataAdapter.Fill(ds,"data");this.GvReport.DataSource=ds.Tables["data"];this.GvReport.DataBind();List<ContactMsg>list=newList<ContactMsg>();for(inti=0;i<ds.Tables["data"].Rows.Count;i++){ContactMsgperModel=newContactMsg();stringPersonNO=ds.Tables[0].Rows[i]["人员编号"].ToString().Replace("","");if(!String.IsNullOrEmpty(PersonNO)){stringPersonName=ds.Tables[0].Rows[i]["姓名"].ToString().Replace("","");stringIsContact=!String.IsNullOrEmpty(ds.Tables[0].Rows[i]["是否签约"].ToString().Replace("",""))?ds.Tables[0].Rows[i]["是否签约"].ToString().Replace("",""):"0";ContactMsgmodel=newContactMsg(){PersonNO=PersonNO,PersonName=PersonName,IsContact=IsContact};list.Add(model);}}ViewState["ContactMsg"]=list;}}else{this.ShowMessage("请选择需要导入的住宿信息excel表!");}}catch(Exceptione){if(e.Message.Equals("外部表不是预期的格式。")){varreader=XmlReader.Create(fileName);vardt=newDataTable();varrow=0;varisColumn=false;varcol=0;while(reader.Read()){if(reader.Name=="Row"&&reader.NodeType==XmlNodeType.Element){row=row+1;col=0;if(row>1){vardr=dt.NewRow();dt.Rows.Add(dr);}}if(reader.Name=="Cell"&&reader.NodeType==XmlNodeType.Element){isColumn=true;if(reader.HasAttributes&&reader.GetAttribute("ss:Index")!=null){col=ConvertToInt(reader.GetAttribute("ss:Index"));}else{col=col+1;}}if(reader.NodeType==XmlNodeType.Text){if(isColumn){if(row==1){dt.Columns.Add(reader.Value);isColumn=false;}else{dt.Rows[dt.Rows.Count-1][col-1]=reader.Value;}}}if(reader.Name=="Table"&&reader.NodeType==XmlNodeType.EndElement){break;}}
解决方案八:
照着上面的修改成你目前所需要的就行了
解决方案九:
该回复于2011-12-13 13:55:22被版主删除