asp.net将excel上传到服务器再写到sql数据库中的代码错误

问题描述

可以上传到服务器但写不到数据库

解决方案

解决方案二:
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数据表}}//其他设置(略)

时间: 2024-11-29 02:11:19

asp.net将excel上传到服务器再写到sql数据库中的代码错误的相关文章

asp.net 从excel上传数据到数据库,如何实现进度条??

问题描述 asp.net从excel上传数据到数据库,如何实现进度条??小白在线等请大神解释原理及所需数据类型及来源 解决方案 解决方案二:可以这样做,先计算有多那少条,然后导入,每导入一条返回一下导入结果,然后就可以计算百分比做出进度条的效果了解决方案三:我个人不建议使用进度条.我更加建议楼主使用ajax提交,通过设置beginsend和complete来显示和隐藏一个循环的gif动画.因为你使用进度条,那么势必要将excel数据分开,一行一行提交,然后后台执行成功,还要返回值给前台,前台根据

JQ 中从本地图片上传到服务器怎么写

问题描述 JQ中从本地图片上传到服务器怎么写 解决方案 解决方案二:用<inputtype='file'和jQ无关解决方案三:有ajax的upload插件,可以找找解决方案四: 解决方案五:直接后台file.SavaAs()解决方案六:页面上用<inputtype='file'name="imgfile"/>接受request.files来接受和jq无关解决方案七:引用5楼yyl8781697的回复: 页面上用<inputtype='file'name=&quo

vs2010 数据的多选一-在VS2010环境下如何将excel数据导入到SQL数据库中的代码

问题描述 在VS2010环境下如何将excel数据导入到SQL数据库中的代码 类似于这种的导入方式的代码.有大神吗 解决方案 c#中高效的excel导入sqlserver的方法 http://wenku.baidu.com/link?url=swMSQLS3aD8QqkCckCokNOOsmqYphZ3nNL7Yeuq-e7K9Mz4UrLy92nGdLXV7IlUNFm9wXreVs7jAFgYtHBDbb1_TD3rOxOrxDKSr6QIDBIO

ASP实现多图片上传到指定的目录并存到数据库

上传|数据|数据库 关于图片上传的例子在网上有很多文章和原代码.但是每次上论坛浏览帖子的时候都是看到很多网友对图片上传感到头疼和麻烦.其实这个问题也是曾经让我感到头疼.也看过了不少的文章和代码.现在我写的这篇文章是把我比较喜欢的一篇代码和动网里的高手对这篇代码优化后再加上我增加一些代码结合出来的!呵呵,其实这篇文章是沾了写这篇代码的人(稻香居士)和动网里那些高手的光.:) 好了,不说废话了.开始来搭建所需要的环境和数据结构! 先新建一个名字叫photo的文件夹.(我在这里就是把图片上传到这个文件

用ASP实现多图片上传到指定的目录并存到数据库

上传|数据|数据库 关于图片上传的例子在网上有很多文章和原代码.但是每次上论坛浏览帖子的时候都是看到很多网友对图片上传感到头疼和麻烦.其实这个问题也是曾经让我感到头疼.也看过了不少的文章和代码.现在我写的这篇文章是把我比较喜欢的一篇代码和动网里的高手对这篇代码优化后再加上我增加一些代码结合出来的!呵呵,其实这篇文章是沾了写这篇代码的人(稻香居士)和动网里那些高手的光.:)好了,不说废话了.开始来搭建所需要的环境和数据结构!先新建一个名字叫photo的文件夹.(我在这里就是把图片上传到这个文件夹里

求救: excel上传到服务器ok,读取到gridview时出错,

问题描述 异常详细信息:System.Data.OleDb.OleDbException:无法启动应用程序.工作组信息文件丢失,或是已被其它用户以独占方式打开.代码如下!protectedvoidbtUpload_Click(objectsender,EventArgse){if(FileUpload1.PostedFile.FileName==""){Response.Write("<scriptlanguage=javascript>alert('请选择要上传

excel 预览-怎么预览上传到服务器的Excel表

问题描述 怎么预览上传到服务器的Excel表 根据Excel上传到服务器(未到数据库)时产生的记录,如表名,日期等,将所有的记录放在gridview中.再根据记录进行预览.删除.导入数据库想了2天一点思路都没有啊,求大神指导!!!

asp.net-ASP.NET中用UPLOADfile控件上传,服务器上传不上APK

问题描述 ASP.NET中用UPLOADfile控件上传,服务器上传不上APK 用uploadfile控件做了个简单的上传,本地测试可以上传图片和APK,但是传到服务器 上就上传不了APK, 等了好久都不行的..可以上传图片的..请问是怎么问题? 没有报错,点上传按钮了等到网页刷新超时... 服务器IIS已经加入了MIME了.. 上传目录也设置了EVERYONE权限了...http://jcb.wd900.com/test.aspx 上面是测试路径 ..大家知道是怎么回事吗? 解决方案 asp.

easyui-easyUI如何能够显示出上传到服务器上的excel文件里面的数据

问题描述 easyUI如何能够显示出上传到服务器上的excel文件里面的数据 easyUI页面上只要显示出上传到服务器上面的excel文件里面的数据就好了,不需要有任何数据库的联系操作,仅仅要页面显示出来 解决方案 你用的什么服务器的编程语言,比如java,你可以用poi(.net用npoi)可以读取excel,然后返回数据,客户端显示就可以了.