ASP.NET中如何用程序将excel中的数据导入到数据库中(C#)

问题描述

ASP.NET中如何用程序将excel中的数据导入到数据库中(C#),比较不同的时,excel只有一个表,里面是全部的详细信息,导入到sqlserver中的是多个表,这个如何实现?希望有具体的例子!

解决方案

解决方案二:
大致原理:先将EXCEL导入GridView,然后再操作GridView中的数据存入数据库相应表中!在这里不能给你提供原码了,但你可以在Google内收到很多!
解决方案三:
用的是vs.net2003啊,应该如何?
解决方案四:
以下是我的一个真实的例子,供参考!<tr><tdalign="right">选择附件:</td><td><INPUTid="File1"type="file"size="15"name="File1"runat="server"><FONTface="宋体">&nbsp;</FONT><asp:buttonid="btnReadData"runat="server"Width="55px"Text="读取"></asp:button><FONTface="宋体">&nbsp;</FONT><asp:buttonid="btnSave"runat="server"Width="59px"Text="导入"></asp:button></td></tr><tr><tdalign="center"valign="top"><asp:datagridid="dgExportProject"runat="server"Width="95%"BorderWidth="1px"BackColor="White"BorderColor="#CC9966"BorderStyle="None"CellPadding="4"><FooterStyleForeColor="#330099"BackColor="#FFFFCC"></FooterStyle><SelectedItemStyleFont-Bold="True"ForeColor="#663399"BackColor="#FFCC66"></SelectedItemStyle><ItemStyleForeColor="#330099"BackColor="White"></ItemStyle><HeaderStyleFont-Bold="True"ForeColor="#FFFFCC"BackColor="#990000"></HeaderStyle><PagerStyleHorizontalAlign="Center"ForeColor="#330099"BackColor="#FFFFCC"></PagerStyle></asp:datagrid></td></tr>privatevoidbtnReadData_Click(objectsender,System.EventArgse){//获取Excep文件的完整路径stringfileName=System.IO.Path.GetFileName(File1.PostedFile.FileName);stringfilePath="";if(this.File1.Value==""){Comm.Jscript.Alert("请先选择您要导入的文件!");}else{intindex=fileName.LastIndexOf(".");if(index>0){if(fileName.Substring(index)==".xls"){DateTimenow=DateTime.Now;fileName=now.ToShortDateString()+now.ToLongTimeString();fileName=fileName.Replace("-","").Replace(":","").Replace("","");filePath=@"../uploads/"+fileName+".xls";this.File1.PostedFile.SaveAs(Server.MapPath(filePath));}else{Comm.Jscript.Alert("读入的文件不是XLS");}}}if(filePath!=""){fileName=Request.MapPath(filePath);stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+fileName+";ExtendedProperties=Excel8.0";stringquery="SELECT*FROM[Sheet1$]";OleDbCommandoleCommand=newOleDbCommand(query,newOleDbConnection(strConn));OleDbDataAdapteroleAdapter=newOleDbDataAdapter(oleCommand);DataSetmyDataSet=newDataSet();//将Excel的[Sheet1]表内容填充到DataSet对象try{oleAdapter.Fill(myDataSet,"[Sheet1$]");//数据绑定this.dgExportProject.DataSource=myDataSet;this.dgExportProject.DataMember="[Sheet1$]";this.dgExportProject.DataBind();this.dgExportProject.Visible=true;this.btnSave.Visible=true;}catch(Exceptionexx){Response.Write(exx.Message);Comm.Jscript.Alert("注意:请用默认的Sheet1$页名称!");}finally{if(File.Exists(filePath)){File.Delete(filePath);}}}}privatevoidbtnSave_Click(objectsender,System.EventArgse){//dgExportProject取出所有数据,保存到项目/客户数据库中if(this.ddlProjectType.SelectedIndex<1){Comm.Jscript.Alert("请选择项目类型!");return;}else{stringprojectId=String.Empty;stringprojectName=String.Empty;stringtoucher=String.Empty;stringtel=String.Empty;stringemail=String.Empty;stringmanager=String.Empty;stringarea=String.Empty;intprojectTypeId=int.Parse(this.ddlProjectType.SelectedItem.Value);dccsData.ProjectInfoproject=newdccsData.ProjectInfo();using(SqlConnectionsqlConn=newSqlConnection(dccsData.Config.StrConn)){try{if(sqlConn.State==ConnectionState.Closed){sqlConn.Open();}foreach(DataGridItemiteminthis.dgExportProject.Items){if(item.Cells.Count==7){projectId=item.Cells[0].Text.Trim().Replace("&nbsp;","");projectName=item.Cells[1].Text.Trim().Replace("&nbsp;","");toucher=item.Cells[2].Text.Trim().Replace("&nbsp;","");tel=item.Cells[3].Text.Trim().Replace("&nbsp;","");email=item.Cells[4].Text.Trim().Replace("&nbsp;","");manager=item.Cells[5].Text.Trim().Replace("&nbsp;","");area=item.Cells[6].Text.Trim().Replace("&nbsp;","");//将上述值写入到数据库if(projectId!="&nbsp;"&&projectId!=String.Empty){project.Insert(projectId,projectName,toucher,tel,email,projectTypeId,manager,area,sqlConn);}}else{Comm.Jscript.Alert("注意:请按照模板格式导入项目信息!");return;}}}catch(Exceptionexx){Response.Write(exx.Message);}finally{if(sqlConn.State==ConnectionState.Open){sqlConn.Close();}}}this.dgExportProject.Visible=false;this.btnSave.Visible=false;}}思路是先把excel文件传到服务器再读,读完删除见http://topic.csdn.net/u/20071224/09/0527e1b5-7c2c-4ee0-97d1-961f8c8c2cf4.html
解决方案五:
顶。
解决方案六:
ding
解决方案七:
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Data.OleDb;usingSystem.Threading;usingSystem.IO;usingModel;usingBLL;namespaceDbTools{internalclassDbToolFunc{publicdelegatevoidErrorHandler(stringerrorMessage);publiceventErrorHandlererrorMessage;publicdelegatevoidDataCompletedHandler(DataSetdata);publiceventDataCompletedHandlerdataCompleted;publicdelegatevoidImportDataCompletingHandler(stringinfoMessage);publiceventImportDataCompletingHandlerimportDataCompling;publicdelegatevoidImportDataCompletedHandler(stringinfoMessage);publiceventImportDataCompletedHandlerimportDataCompled;privateThread_threadShow;privateThread_threadImport;publicDbToolFunc(){}publicDbToolFunc(stringxlsPathName){_xlsPathName=xlsPathName;}privatestring_xlsPathName=null;publicstringxlsFileName{set{this._xlsPathName=value;}}privateDataSet_data=null;publicDataSetImportData{set{this._data=value;}}privateDataSet_errordata=null;publicDataSetErrorData{get{returnthis._errordata;}}privatevoidGetDataProc(){OleDbConnectionobjConn=null;try{DataSetds=newDataSet();if(String.IsNullOrEmpty(_xlsPathName)){if(this.errorMessage!=null){if(this.errorMessage!=null)this.errorMessage("文件名没有指定!");}return;}if(!File.Exists(_xlsPathName)){if(this.errorMessage!=null){if(this.errorMessage!=null)this.errorMessage("文件不存在!");}return;}stringstrConn="Provider=Microsoft.Jet.OleDb.4.0;"+"datasource="+_xlsPathName+";ExtendedProperties='Excel8.0;HDR=YES;IMEX=1'";objConn=newOleDbConnection(strConn);objConn.Open();DataTableschemaTable=objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);OleDbDataAdaptersqlada=newOleDbDataAdapter();foreach(DataRowdrinschemaTable.Rows){stringstrSql="Select*From["+dr[2].ToString().Trim()+"]";OleDbCommandobjCmd=newOleDbCommand(strSql,objConn);sqlada.SelectCommand=objCmd;sqlada.Fill(ds,dr[2].ToString().Trim());}objConn.Close();if(this.dataCompleted!=null)this.dataCompleted(ds);}catch(Exceptionex){objConn.Close();if(this.errorMessage!=null)this.errorMessage(ex.Message);}}publicvoidGetDataSetFromExcel(){if(this._threadShow!=null&&this._threadShow.ThreadState==ThreadState.Running){return;}this._threadShow=newThread(newThreadStart(GetDataProc));this._threadShow.Start();}privatevoidImportDataProc(){try{if(_data==null){if(this.errorMessage!=null)this.errorMessage("没有数据要导入!");}/*Area,Adscription,Province,Attribute,IMEINo,PackingCode*,CustomerID,ClassCode,ModelCode,ColorCode,Quantity,CreateTime*/DataTabletb=_data.Tables[0];stringArea=tb.Rows[0][0].ToString();stringAdscription=tb.Rows[0][1].ToString();stringProvince=tb.Rows[0][2].ToString();stringAttribute=tb.Rows[0][3].ToString();stringCustomerID=tb.Rows[0][9].ToString();stringClassCode=tb.Rows[0][6].ToString();stringModelCode=tb.Rows[0][7].ToString();stringColorCode=tb.Rows[0][8].ToString();intQuantity=Convert.ToInt32(tb.Rows[0][10]);DateTimeCreateTime=Convert.ToDateTime(tb.Rows[0][11]);ptShipMentbll=newptShipMent();stringCode=bll.BuildptShipMentNo(Area,Province,Adscription,Attribute);if(importDataCompling!=null)importDataCompling("得到出货单号:"+Code);ptShipMentInfomaster=newptShipMentInfo();master.CODE=Code;master.AREA=Area;master.ADSCRIPTION=Adscription;master.ATTRIBUTE=Attribute;master.PROVINCE=Province;master.MODELCODE=ModelCode;master.CLASSCODE=ClassCode;master.COLORCODE=ColorCode;master.CUSTOMERID=CustomerID;master.QUANTITY=Quantity;master.CREATETIME=CreateTime;master.CREATEUSER="admin";master.LASTTIME=CreateTime;master.LASTUSER="admin";master.STATUS="1";master.REMARK="导入";if(importDataCompling!=null)importDataCompling("增加主体数据...");List<ptShipmentListInfo>details=newList<ptShipmentListInfo>();foreach(DataRowrowintb.Rows){ptShipmentListInfoitem=newptShipmentListInfo();item.CODE=Code;item.IMEINO=row[4].ToString();item.PACKINGCODE=row[5].ToString();details.Add(item);if(importDataCompling!=null)importDataCompling("增加明细数据..."+item.IMEINO+""+item.PACKINGCODE);}if(importDataCompled!=null)importDataCompled("开始导入数据...");bll.InsertptShipMentNoDTC(master,details);if(importDataCompled!=null)importDataCompled("导入成功!");}catch(Exceptionex){if(this.errorMessage!=null)this.errorMessage(ex.Message);}}publicvoidImportDataToSQLServer(){if(this._threadImport!=null&&this._threadImport.ThreadState==ThreadState.Running){return;}this._threadImport=newThread(newThreadStart(ImportDataProc));this._threadImport.Start();}}}

参考一下吧,自己写的导入类用到了自己的数据,但思路是不变的。

时间: 2024-08-03 21:54:04

ASP.NET中如何用程序将excel中的数据导入到数据库中(C#)的相关文章

excel-使用jxl把Excel的数据导入到数据库中的问题

问题描述 使用jxl把Excel的数据导入到数据库中的问题 如果有Excel中值为空的话,导入到数据库中报错.怎么改? 数据库中的该列是允许为空的. 解决方案 JXL导入EXCEL文件到数据库 1.导入到数据库中 第一步:把文件上传到服务器.private File upload; 第二步:解析文件.(只支持EXCEL2003文件) 第三部:保存到数据库中 [java] view plaincopy // 开始解析 List importUserList = new ArrayList(); t

easyui-关于spring mvc框架 easyUI界面将excel数据导入到数据库中的方法

问题描述 关于spring mvc框架 easyUI界面将excel数据导入到数据库中的方法 将一个excel表格的文件导入到数据库中,在界面调用得到所有数据的方法将数据显示在页面上,如何将excel表格的文件导入到数据库中呢 解决方案 可以使用poi 插件,对Excel进行操作,获取数据,保存到数据库中

求C#代码!!关于从Excel表中将数据导入Access数据库,以及Access数据库中的数据导出到Excel表的代码。急!!!晚上就得交差啊

问题描述 我需要从Excel表中将数据导入Access数据库,以及Access数据库中的数据导出到Excel表的代码,越具体越好!!望各位高手能不吝赐教 解决方案 解决方案二:不会吧?难道世间真的是如此残忍?为什么没人理我啊?高手们,算小弟我求你们了!难道是分不够多吗?初出江湖实在是身无分文啊----就不要太在意这个了,好不好啊?给我写写吧,万分感谢了!!解决方案三:这里是利用officeapplication方式来操作excel的http://blog.csdn.net/fangxinggoo

网站设计中如何将对应的用户网页的数据保存在数据库中

问题描述 网站设计中如何将对应的用户网页的数据保存在数据库中 最近在做一个关于二手书交易平台的小项目(毕业设计),在处理用户登录后自动跳转到所对应的用户个人网页时没什么思路,求各位大神指点一下...小妹初来乍到,不甚感激啊... 解决方案 并不是直接把用户的网页保存在数据库中,而是把用户的信息存在各张数据表中.在用户登陆后可以获取到用户的ID(确保是唯一的),根据这个ID获取数据表中用户的相关信息,然后在用户个人页面进行展示..比如表A是用户表,其主键为user_id,同时user_id为表B的

OWC Spreadsheet怎么样将显示在网页的数据导入到数据库中??急

问题描述 问题是这样的:现在数据库的中是数据已经在网页中的OWC11中显示了代码是这样的:<objectclassid="clsid:0002E559-0000-0000-C000-000000000046"width="600"id="Spreadsheet1"height="200"><%--<paramname="DataType"value="XMLURL"

Excel、记事本数据导入到数据库的实现方法_实用技巧

文件示例:Excel: 记事本: 前台代码: 复制代码 代码如下: <div class="tab-content detail" id="divSecond" runat="server" visible="false">            <fieldset >             <p>                <label>                 

从SQL Server备份文件中导入现存数据库中

  SQL Server本身有数据导入的操作.但如果要从一个备份的文件中导入数据,则要进行另外的操作.下面以一个例子进行说明. SQL Server服务器上已有一个DOE数据库,并且里面有大量的数据,现准备从另外一个备份文件A1.BAK(不是DOE数据库的备份文件)中导入另外的数据(即导入后在DOE中增加一些数据表,表中已录有数据),并保持原DOE的数据不变. 1.首先,在"SQL企业管理器"中新建一个临时数据库A1. 2.右击A1数据库,选择:所有任务->还原数据库. 3.在&

从数据库中导出image类型到XML,如何再导入到数据库

问题描述 小弟使用ds.writeXML("c:/new.xml");讲表中的数据写入new.xml文件,其中包含数据表中包含IMAGE类型数据(使用的是SQLserver数据库),现在想将new.xml文件中的IMAGE类型数据导入到数据库中如何操作. 解决方案 解决方案二:用dataset控件解决方案三:楼主,我将SQLserver中存的图像数据文件取出后提示无效,这是什么原因?解决方案四:自己顶一下大家帮忙啊

word-如何用java打印Excel或者Word?数据是从数据库中来的

问题描述 如何用java打印Excel或者Word?数据是从数据库中来的 急急急!!哪位大神知道怎么用java打印成Excel表格或者Word文档,数据都是 从数据库中来的,现在有很多都需要打印功能,但是我不知道有什么辅助工具或者插件什么的,求指点 解决方案 poi和jxl都可以 解决方案二: poi和jxl都可以 解决方案三: 百度一下 java toexcel 范例有很多 解决方案四: poi ,可以给你例子.. 解决方案五: java有POI工具来操作Excel的,可以用java纯后台程序