问题描述
可以上传到服务器但写不到数据库
解决方案
解决方案二:
usingSystem;usingSystem.Collections;usingSystem.Configuration;usingSystem.Data;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.IO;usingSystem.Data.OleDb;usingSystem.Data.SqlClient;publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidtj_Click(objectsender,EventArgse){if(FileUpload1.HasFile==false)//HasFile用来检查FileUpload是否有指定文件{Response.Write("<script>alert('请您选择Excel文件')</script>");return;//当无文件时,返回}stringIsXls=System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名if(IsXls!=".xls"){Response.Write("<script>alert('只可以选择Excel文件')</script>");return;//当选择的不是Excel文件时,返回}stringfilename=FileUpload1.FileName;//获取Execle文件名DateTime日期函数stringsavePath=Server.MapPath(("upfiles\")+filename);//Server.MapPath获得虚拟服务器相对路径FileUpload1.SaveAs(savePath);//SaveAs将上传的文件内容保存在服务器上DataSetds=ExcelSqlConnection(savePath,filename);//调用自定义方法DataRow[]dr=ds.Tables[0].Select();//定义一个DataRow数组introwsnum=ds.Tables[0].Rows.Count;if(rowsnum==0){Response.Write("<script>alert('Excel表为空表,无数据!')</script>");//当Excel表为空时,对用户进行提示}else{for(inti=0;i<dr.Length;i++){//前面除了你需要在建立一个“upfiles”的文件夹stringtitle=dr[i]["标题"].ToString();stringlinkurl=dr[i]["链接地址"].ToString();stringcategoryname=dr[i]["分类"].ToString();stringcustomername=dr[i]["内容上"].ToString();//Response.Write("<script>alert('导入内容:"+ex.Message+"')</script>");}Response.Write("<script>alert('Excle表导入成功!');</script>");}}#region连接Excel读取Excel数据并返回DataSet数据集合///<summary>///连接Excel读取Excel数据并返回DataSet数据集合///</summary>///<paramname="filepath">Excel服务器路径</param>///<paramname="tableName">Excel表名称</param>///<returns></returns>///publicstaticSystem.Data.DataSetExcelSqlConnection(stringfilepath,stringtableName){stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+filepath+";ExtendedProperties='Excel8.0;HDR=YES;IMEX=1'";OleDbConnectionExcelConn=newOleDbConnection(strConn);try{stringstrCom=string.Format("SELECT*FROM[Sheet1$]");ExcelConn.Open();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,ExcelConn);DataSetds=newDataSet();myCommand.Fill(ds,"["+tableName+"$]");ExcelConn.Close();returnds;}catch{ExcelConn.Close();returnnull;}}#endregion}
解决方案三:
一步步来呗.读出来先放页面显示,看能不能显示出来能显示出来再看为啥写不进去
解决方案四:
此外,你发的只是读excel到dataset的代码,入库呢,没写代码能入进去么
解决方案五:
引用2楼Z65443344的回复:
一步步来呗.读出来先放页面显示,看能不能显示出来能显示出来再看为啥写不进去
显示不出来,该怎么做
解决方案六:
引用3楼Z65443344的回复:
此外,你发的只是读excel到dataset的代码,入库呢,没写代码能入进去么
代码该写在什么地方
解决方案七:
太美不敢直视啊....
解决方案八:
不懂啊,能教教我吗
解决方案九:
引用6楼diaodiaop的回复:
太美不敢直视啊....
不懂啊,能教教我吗
解决方案十:
将Excel文件数据读取到SQLServer数据库示例//用Timer组件将Excel文件数据写入数据库privatevoidtimer1_Tick(objectsender,EventArgse){stringP_str_Name="";//存储遍历到的Excel文件名List<string>P_list_SheetNames=newList<string>();//实例化泛型集合对象,用来存储工作表名称P_str_Name=txt_Path.Text;//记录遍历到的Excel文件名P_list_SheetNames=GetSheetName(P_str_Name);//获取Excel文件中的所有工作表名for(intj=0;j<P_list_SheetNames.Count;j++)//遍历所有工作表{if(ckbox_Windows.Checked)//如果用Windows身份验证登录SqlServerImportDataToSql(P_str_Name,P_list_SheetNames[j],"DataSource="+txt_Server.Text+";InitialCatalog="+cbox_Server.Text+";IntegratedSecurity=SSPI;");//将工作表内容导出到SqlServerelseif(ckbox_SQL.Checked)//如果用SqlServer身份验证登录SqlServerImportDataToSql(P_str_Name,P_list_SheetNames[j],"DataSource="+txt_Server.Text+";Database="+cbox_Server.Text+";Uid="+txt_Name.Text+";Pwd="+txt_Pwd.Text+";");//将工作表内容导出到SqlServer}System.Threading.Thread.Sleep(60000);//使线程休眠1分钟}//CodeGo.net///获取指定服务器中的所有数据库privateDataTableGetTable(stringP_str_Sql){try{SqlConnectionsqlcon=newSqlConnection(P_str_Sql);//实例化数据库连接对象SqlDataAdaptersqlda=newSqlDataAdapter("selectnamefromsysdatabases",sqlcon);//实例化数据桥接器对象DataTableDTable=newDataTable("sysdatabases");//实例化DataTable对象sqlda.Fill(DTable);//填充DataTable数据表returnDTable;//返回DataTable数据表}catch{returnnull;//返回null}}//获取所有工作表名称privateList<string>GetSheetName(stringP_str_Excel){List<string>P_list_SheetName=newList<string>();//实例化泛型集合对象CloseProcess("EXCEL");//关闭所有Excel进程//连接Excel数据库OleDbConnectionolecon=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+P_str_Excel+";ExtendedProperties=Excel8.0");olecon.Open();//打开数据库连接System.Data.DataTableDTable=olecon.GetSchema("Tables");//实例化表对象DataTableReaderDTReader=newDataTableReader(DTable);//实例化表读取对象while(DTReader.Read())//循环读取{stringP_str_Name=DTReader["Table_Name"].ToString().Replace('$','').Trim();//记录工作表名称if(!P_list_SheetName.Contains(P_str_Name))//判断泛型集合中是否已经存在该工作表名称P_list_SheetName.Add(P_str_Name);//将工作表名添加到泛型集合中}DTable=null;//清空表对象DTReader=null;//清空表读取对象olecon.Close();//关闭数据库连接returnP_list_SheetName;//返回得到的泛型集合}//将工作表内容导出到SqlServerpublicvoidImportDataToSql(stringP_str_Excel,stringP_str_SheetName,stringP_str_SqlCon){DataSetmyds=newDataSet();//实例化数据集对象CloseProcess("EXCEL");//关闭所有Excel进程//定义连接Excel的字符串stringP_str_OledbCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+P_str_Excel+";ExtendedProperties=Excel8.0;";OleDbConnectionoledbcon=newOleDbConnection(P_str_OledbCon);//实例化Oledb数据库连接对象stringP_str_ExcelSql="";//定义变量,用来记录要执行的Excel查询语句OleDbDataAdapteroledbda=null;//实例化Oledb数据桥接器对象P_str_ExcelSql=string.Format("select*from[{0}$]",P_str_SheetName);//记录要执行的Excel查询语句oledbda=newOleDbDataAdapter(P_str_ExcelSql,P_str_OledbCon);//使用数据桥接器执行Excel查询oledbda.Fill(myds,P_str_SheetName);//填充数据stringP_str_CreateSql=string.Format("use"+cbox_Server.Text+"ifobject_Id('"+P_str_SheetName+"')isnotnulldroptable"+P_str_SheetName+"createtable{0}(",P_str_SheetName);//定义变量,用来记录创建表的SQL语句foreach(DataColumncinmyds.Tables[0].Columns)//遍历数据集中的所有行{P_str_CreateSql+=string.Format("[{0}]text,",c.ColumnName);//在表中创建字段}P_str_CreateSql=P_str_CreateSql+")";//完善创建表的SQL语句using(SqlConnectionsqlcon=newSqlConnection(P_str_SqlCon))//实例化SQL数据库连接对象{sqlcon.Open();//打开数据库连接SqlCommandsqlcmd=sqlcon.CreateCommand();//实例化SqlCommand执行命令对象sqlcmd.CommandText=P_str_CreateSql;//指定要执行的SQL语句sqlcmd.ExecuteNonQuery();//执行操作sqlcon.Close();//关闭数据连接}using(SqlBulkCopybcp=newSqlBulkCopy(P_str_SqlCon))//用bcp导入数据{bcp.BatchSize=100;//每次传输的行数bcp.DestinationTableName=P_str_SheetName;//定义目标表bcp.WriteToServer(myds.Tables[0]);//将数据写入SqlServer数据表}}//其他设置(略)