Asp连接读取excel内容并导入到数据库

合集下载

用ASP连接数据库的几种方法

用ASP连接数据库的几种方法

用ASP连接数据库的几种方法用ASP连接DBF、DBC、MDB、Excel、SQL Server型数据库的方法:一、ASP的对象存取数据库方法在ASP中,用来存取数据库的对象统称ADO〔Active Data Objects〕,主要含有三种对象:Connection、Recordset 、CommandConnection:负责打开或连接数据Recordset:负责存取数据表Command:负责对数据库执行行动查询命令二、连接各数据库的驱动程序连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常方便、简单,而使用数据源比较麻烦。

驱动程序适用数据库类型Microsoft.Jet.OLEDB.4.0 MdbMicrosoft Access Driver AccessMicrosoft dBase Driver DbaseMicrosoft Excel Driver ExcelMicrosoft Visual FoxPro Driver DbcSQLOLEDB.1 SQL srver7.0而我们在一般情况下使用Access的数据库比较多,在这里我建议大家连接Access数据库使用下面的方法:dim connset conn = server.createobject("adodb.connection")conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " &server.mappath("../db/bbs.mdb")其中../db/bbs.mdb是你的数据库存放的相对路径!如果你的数据库和ASP文件在同一目录下,你只要这样写就可以了:dim connset conn = server.createobject("adodb.connection")conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.map path("bbs.mdb")有许多初学者在遇到数据库连接时总是会出问题,然而使用上面的驱动程序只要你的数据库路径选对了就不会出问题了ASP连接数据库的5种方法第一种 - 这种方法用在ACCESS中最多strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _& Server.MapPath("aspfree.mdb")set conn = server.createobject("adodb.connection")conn.open strconn第二种-这种方法用在SQL SERVER中多strconn = "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1;" _ &"UID=LoginID;Password=;DATABASE=Database_Name"set conn = server.createobject("adodb.connection")conn.open strconn第三种strconn="Driver={Microsoft Access Driver(*.mdb)};" _&"DBQ=F:\Inetpub\wwwroot\somedir\db1.mdb;DefaultDir=" _&"f:\Inetpub\wwwroot\somedir;uid=LoginID;" _&"pwd=Password;DriverId=25;FIL=MSAccess;"set conn = server.createobject("adodb.connection")conn.open strconn第四种运用系统数据源The following uses a Data Source Name: Exampleset conn = server.createobject("adodb.connection")conn.open "Example"第五种运用ODBC数据源,前提是你必须在控制面板的ODBC中设置数据源set rs = server.createobject("adodb.recordset")rs.open "tblname", "DSNName", 3, 3 第一种 - 这种方法用在ACCESS中最多strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _& Server.MapPath("aspfree.mdb")set conn = server.createobject("adodb.connection")conn.open strconnASP访问数据库的方式有哪些?在ASP中可以通过三种方式访问数据库:1、IDC〔Internet Database Connector〕方式;2、ADO〔ActiveX Data Objects〕方式;3、RDS〔Remote Data Service〕方式。

ASP连接Access数据库几种常见方法

ASP连接Access数据库几种常见方法

ASP连接Access数据库几种常见方法在弹出来的“自定义连接字符串”对话框中,"连接名称"随便写一个。

“连接字符串”就要好好填写了。

当"使用此计算机上的驱动程序"时应用绝对路径:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\newgn\database\cnbruce.mdb否则“使用测试服务器上的驱动程序”采用Mappath转换路径:"Driver={Microsoft Access Driver (*.mdb)};DBQ="& server.mappath("/newgn/database/cnbruce.mdb")注:如果将要上传到网上去的页子就可以直接采用Mappath了点击“测试”,出现成功即爽。

附注:需要更多了解的,可以打开DW的帮助教程。

第一种连接和记录集分开声明<%db="db/darden.mdb"set conn=server.createobject("ADODB.connection")connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("" & db & "")conn.open connstr%><%set rs=server.createobject("adodb.recordset")sql="select * from ebook order by id desc"rs.open sql,conn,3,3rs.addnew............rs.update (rs.delete)rs.closeset rs=nothingconn.closeset conn=nothingresponse.write("<center><a href=viewdatabase.asp>显示文字</a></center>")Response.Redirect "homepage.asp"%>第二种连接和记录集一同声明<%set rs=server.createobject("adodb.recordset")sql="select * from ebook order by id desc"conn = "DBQ=" + server.mappath("book.mdb") + ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"rs.open sql,conn,3,3rs.addnew............rs.update (rs.delete)rs.closeset rs=nothingresponse.write("<center><a href=viewdatabase.asp>显示文字</a></center>")%>ASP数据库简单*作教程<1>.数据库连接(用来单独编制连接文件conn.asp)<%Set conn = Server.CreateObject(ADODB.Connection)conn.Open DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= & Server.MapPath(\bbs\db1\user.mdb)%>(用来连接bbs\db1\目录下的user.mdb数据库)<2>显示数据库记录原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录如果是从头到尾:用循环并判断指针是否到末使用: not rs.eof如果是从尾到头:用循环并判断指针是否到开始使用:not rs.bof <!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<%set rs=server.CreateObject(adodb.recordset) (建立recordset 对象)sqlstr=select * from message ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)rs.movefirst ---->(将指针移到第一条记录)while not rs.eof ---->(判断指针是否到末尾)response.write(rs(name)) ---->(显示数据表message中的name字段)rs.movenext ---->(将指针移动到下一条记录)wend ---->(循环结束)------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%>其中response对象是服务器向客户端浏览器发送的信息<3>增加数据库记录增加数据库记录用到rs.addnew,rs.update两个函数<!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<%set rs=server.CreateObject(adodb.recordset) (建立recordset 对象)sqlstr=select * from message ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)rs.addnew 新增加一条记录rs(name)=xx 将xx的值传给name字段rs.update 刷新数据库------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%><4>删除一条记录删除数据库记录主要用到rs.delete,rs.update<!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<%dim namename=xxset rs=server.CreateObject(adodb.recordset) (建立recordset 对象)sqlstr=select * from message ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表)rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式)-------------------------------------------------------while not rs.eofif rs.(name)=name thenrs.deleters.update 查询数据表中的name字段的值是否等于变量name的值xx,如果符合就执行删除,else 否则继续查询,直到指针到末尾为止rs.movenextemd ifwend------------------------------------------------------------------------------------------------------------rs.closeconn.close 这几句是用来关闭数据库set rs=nothingset conn=nothing-------------------------------------------------------%><5>关于数据库的查询(a) 查询字段为字符型<%dim user,pass,qq,mail,messageuser=request.Form(user)pass=request.Form(pass)qq=request.Form(qq)mail=request.Form(mail)message=request.Form(message)if trim(user)&x=x or trim(pass)&x=x then (检测user值和pass 值是否为空,可以检测到空格)response.write(注册信息不能为空)elseset rs=server.CreateObject(adodb.recordset)sqlstr=select * from user where user='&user&' (查询user数据表中的user字段其中user字段为字符型)rs.open sqlstr,conn,1,3if rs.eof thenrs.addnewrs(user)=userrs(pass)=passrs(qq)=qqrs(mail)=mailrs(message)=messagers.updaters.closeconn.closeset rs=nothingset conn=nothingresponse.write(注册成功)end ifrs.closeconn.closeset rs=nothingset conn=nothingresponse.write(注册重名)%>(b)查询字段为数字型<%dim numnum=request.Form(num)set rs=server.CreateObject(adodb.recordset)sqlstr=select * from message where id=&num (查询message 数据表中id字段的值是否与num相等,其中id为数字型) rs.open sqlstr,conn,1,3if not rs.eof thenrs.deleters.updaters.closeconn.closeset rs=nothingset conn=nothingresponse.write(删除成功)end ifrs.closeconn.closeset rs=nothingset conn=nothingresponse.write(删除失败)。

asp实现excel中的数据导入数据库

asp实现excel中的数据导入数据库
hang=hang+1
loop
rse.movefirst
do while not rse.eof
setrst=server.CreateObject("adodb.recordset")
sqlt="select * fromSellman"
rst.opensqlt,conn,1,3
rst.addnew()
objConn.OpenstrConn
strSql="SELECT * FROM [Sheet1$]"
objRS.OpenstrSql,objConn,1,1
objRS.MoveFirst
%><!--#include file="conn.asp"--><%
'循环excel中所有记录
while not objRS.eof
setrs=Server.CreateObject("Adodb.Recordset")
'查询语句
sql_s= "select * fromceshiwherelname='"&objRS(0) & "' and old='"&objRS(1) & "' and sex='"&objRS(2) & "' andguojia='"&objRS(3) & "' and QQ='"&objRS(4) & "'"
rst("Homepage")=c2(rse(8))

ASP.NETCore导入导出Excelxlsx文件实例

ASP.NETCore导入导出Excelxlsx文件实例

Core导⼊导出Excelxlsx⽂件实例 Core 使⽤EPPlus.Core导⼊导出Excel xlsx ⽂件,EPPlus.Core⽀持Excel 2007/2010 xlsx⽂件导⼊导出,可以运⾏在Windows, Linux和Mac。

EPPlus.Core 是基于EPPlus 更改⽽来,在Linux 下需要安装libgdiplus 。

下⾯在 Core 中导⼊导出Excel xlsx ⽂件。

新建项⽬新建⼀个 Core Web Application 项⽬ASPNETCoreExcel,选择Web 应⽤程序不进⾏⾝份验证。

然后添加EPPlus.Core 引⽤。

使⽤NuGet 命令⾏:Install-Package EPPlus.Core也可以使⽤NuGet包管理器安装。

导出xlsx⽂件新建⼀个XlsxController ,添加Export 操作。

public class XlsxController : Controller{private IHostingEnvironment _hostingEnvironment;public XlsxController(IHostingEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;}public IActionResult Index(){return View();}public IActionResult Export(){string sWebRootFolder = _hostingEnvironment.WebRootPath;string sFileName = $"{Guid.NewGuid()}.xlsx";FileInfo file = new FileInfo(bine(sWebRootFolder, sFileName));using (ExcelPackage package = new ExcelPackage(file)){// 添加worksheetExcelWorksheet worksheet = package.Workbook.Worksheets.Add("aspnetcore");//添加头worksheet.Cells[1, 1].Value = "ID";worksheet.Cells[1, 2].Value = "Name";worksheet.Cells[1, 3].Value = "Url";//添加值worksheet.Cells["A2"].Value = 1000;worksheet.Cells["B2"].Value = "LineZero";worksheet.Cells["C2"].Value = "/linezero/";worksheet.Cells["A3"].Value = 1001;worksheet.Cells["B3"].Value = "LineZero GitHub";worksheet.Cells["C3"].Value = "https:///linezero";worksheet.Cells["C3"].Style.Font.Bold = true;package.Save();}return File(sFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");}}通过依赖注⼊获取HostingEnvironment,对应可以获取程序的相关⽬录及属性。

用ASP上传Excel表格并导入到数据库

用ASP上传Excel表格并导入到数据库

用ASP上传Excel表格并导入到数据库<%set upload=new upload_5xSoftset file=upload.file("file1")formPath="../upload1/"if file.filename="" thenresponse.Write "<script language=‘javascript‘>alert(‘你没选择文件!‘);history.go(-1);</script>"elseif file.filesize>1000 thenfileExt=lcase(right(file.filename,3))if fileExt<>"xls" thenResponse.Write"文件类型非法"Response.endend ifend ifrandomizeranNum=int(9000000*rnd)+10000filename=formPath&year(now)&month(now)&day(now)&h our(now)&minute(now)&second(now)&ranNum&"."&fileExt if file.FileSize>0 thenfile.SaveAs Server.mappath(FileName)end ifconnstr = "driver={microsoft Access driver (*.mdb)}; dbq=" & server.mappath("../../data/#data.mdb")set conn3 = server.createobject("ADODB.CONNECTION")conn3.open connstrset rs=server.createobject("adodb.recordset")rs.Open "select * from User whereUserName=‘"&Session("user")&"‘ " ,conn3,3,3rs("log")=cstr(FileName)rs.updaters.closeconn3.close‘这里用来写导入数据库的程序kl=FileNameop=len(kl)op2= mid(kl,3,op-2)strAddr = Server.MapPath(""&kl)set excelconn=server.createobject("adodb.connection")‘strAddr = file‘‘输出源文件名excelconn.open"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & strAddr‘‘建立excel记录集set rs2=server.createobject("adodb.recordset")set rs3= Server.CreateObject("ADODB.Recordset")set rs3 = excelconn.OpenSchema(20)op=rs3("TABLE_NAME")sql="select * from "+"["+ op+"]"rs2.open sql,excelconn,1,1‘找到表connstr = "driver={microsoft Access driver (*.mdb)}; dbq=" & server.mappath("../../data/#data1.mdb")set conn = server.createobject("ADODB.CONNECTION")conn.open connstrstrSQL="Delete * From Sheet1 Where user=‘"&Se ssion("user")&"‘"conn.execute strSQLconnstr = "driver={microsoft Access driver (*.mdb)}; dbq=" & server.mappath("../../data/#data1.mdb")set conn = server.createobject("ADODB.CONNECTION")‘删除以前的信息conn.open connstrset rs4= Server.CreateObject("ADODB.Recordset")rs4.open "select * from Sheet1",conn,3,3if rs4.Fields.Count-3 <> rs2.Fields.Count-1 thenresponse.write "要上传的表格格式不对,不能导入统一数据库!"response.endelse‘导入过程for j = 1 to rs2.recordCountrs4.addnewfor i = 0 to rs2.Fields.Count-1rs4.Fields("user")=Session("user")rs4.Fields(i+1)=rs2.Fields(i)nextrs2.movenextnextend if‘ ............‘kl=""strSQL="delete FROM Sheet1 where isnull(品名) = true" conn.execute strSQLconn.closeresponse.write "成功 "response.redirect "../../index.asp"end if。

ASP将Excel导入到Access数据库的方法实例

ASP将Excel导入到Access数据库的方法实例

Excel中的数据导入到Access中,前提是在Access中的表已经建好。

dim conndim conn2set conn=CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data Source=c:\book1.mdb"set conn2=CreateObject("ADODB.Connection")conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DatabasePassword=;Extended properties=Excel 5.0;Data Source=c:\book1.xls"sql = "select * FROM [Sheet1$]"set rs = conn2.execute(sql)while not rs.eofsql = "insert into xxx([a],[bb],[c],[d]) values('"& fixsql(rs(0)) &"','"& fixsql(rs(1)) &"','"&fixsql(rs(2)) &"','"& fixsql(rs(3)) &"')"conn.execute(sql)rs.movenextwendconn.closeset conn = nothingconn2.closeset conn2 = nothingfunction fixsql(str)dim newstrnewstr = strif isnull(newstr) thennewstr = ""elsenewstr = replace(newstr,"'","'")end iffixsql = newstrend function导入到Sql Server数据库中时,如果Excel文件和数据库不在同一台服务器上时,请参考上面的代码。

用ASP访问excel中的数据

用ASP访问excel中的数据

用ASP访问excel中的数据1、建立一个链接文件名为conn。

<%db="D:\标件.xlsx" '用的是数据实际路径哈’set conn =server.CreateObject("adodb.connection")connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & db + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"conn.open connstr ’打开excel%>2、查询excel表格中的内容。

<%sqlstr="select * from [标件2010年$] order by 序列desc" ‘查询语句set rs =server.CreateObject("adodb.recordset")rs.open sqlstr,conn,0,1rs.movefirstdo while not rs.eof %><tr><td width='50' height='20'><%response.write(rs("序列"))%></td><td width='70' height='20'><%response.write(rs("标准"))%></td><td width='100' height='20'><%response.write(rs("名称"))%></td><td width='60' height='20'><%response.write(rs("材质"))%></td><td width='120' height='20'><%response.write(rs("规格型号"))%></td><td width="60" height="20"><%response.write(rs("单位"))%></td><td width="120" height="20"><%response.write(rs("入库数量"))%></td><td width="50" height="20"><%response.write(rs("入库时间"))%></td><td width="80" height="20"><%response.write(rs("出库数量"))%></td><td width="80" height="20"><%response.write(rs("出库时间"))%></td><td width="80" height="20"><%response.write(rs("领用人"))%></td><td width="70" height="20"><%response.write(rs("合同号"))%></td><td width="80" height="20"><%response.write(rs("库存数量"))%></td><td width="60" height="20"><%response.write(rs("备注"))%></td></tr><%rs.movenextloopresponse.Write"</table>"conn.close%>。

ASP导出Excel数据的四种方法

ASP导出Excel数据的四种方法

ASP导出Excel数据的四种方法一、使用OWC什么是OWC?OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。

在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境。

这种模式下,客户端工作站将在整个任务中分担很大的比重。

<%Option ExplicitClass ExcelGenPrivate objSpreadsheetPrivate iColOffsetPrivate iRowOffsetSub Class_Initialize()Set objSpreadsheet = Server.CreateObject("OWC.Spreadsheet")iRowOffset = 2iColOffset = 2End SubSub Class_Terminate()Set objSpreadsheet = Nothing "Clean up End SubPublic Property Let ColumnOffset(iColOff) If iColOff > 0 theniColOffset = iColOffElseiColOffset = 2End IfEnd PropertyPublic Property Let RowOffset(iRowOff) If iRowOff > 0 theniRowOffset = iRowOffElseiRowOffset = 2End IfEnd Property Sub GenerateWorksheet(objRS)"Populates the Excel worksheet based on a Recordset"s contents"Start by displaying the titlesIf objRS.EOF then Exit SubDim objField, iCol, iRowiCol = iColOffsetiRow = iRowOffsetFor Each objField in objRS.FieldsobjSpreadsheet.Cells(iRow, iCol).Value = /doc/71b0b63383c4bb4cf7ecd11a.htmlobjSpreadsheet.Columns(iCol).AutoFitColumns"设置Excel表里的字体objSpreadsheet.Cells(iRow, iCol).Font.Bold = True objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10 objSpreadsheet.Cells(iRow, iCol).Halignment = 2 "居中iCol = iCol + 1Next "objField"Display all of the dataDo While Not objRS.EOFiRow = iRow + 1iCol = iColOffsetFor Each objField in objRS.FieldsIf IsNull(objField.Value) thenobjSpreadsheet.Cells(iRow, iCol).Value = ""ElseobjSpreadsheet.Cells(iRow, iCol).Value = objField.Value objSpreadsheet.Columns(iCol).AutoFitColumns objSpreadsheet.Cells(iRow, iCol).Font.Bold = False objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10End IfiCol = iCol + 1Next "objFieldobjRS.MoveNextLoopEnd Sub Function SaveWorksheet(strFileName)"Save the worksheet to a specified filenameOn Error Resume NextCall objSpreadsheet.ActiveSheet.Export(strFileName, 0)SaveWorksheet = (Err.Number = 0)End FunctionEnd ClassDim objRSSet objRS = Server.CreateObject("ADODB.Recordset")objRS.Open "SELECT * FROM xxxx", "Provider=SQLOLEDB.1;Persist SecurityInfo=True;User ID=xxxx;Password=xxxx;Initial Catalog=xxxx;Data source=xxxx;"Dim SaveNameSaveName = Request.Cookies("savename")("name")Dim objExcelDim ExcelPathExcelPath = "Excel\" & SaveName & ".xls"Set objExcel = New ExcelGenobjExcel.RowOffset = 1objExcel.ColumnOffset = 1objExcel.GenerateWorksheet(objRS)If objExcel.SaveWorksheet(Server.MapPath(ExcelPath)) then "Response.Write "已保存为Excel文件.下载"ElseResponse.Write "在保存过程中有错误!"End IfSet objExcel = NothingobjRS.CloseSet objRS = Nothing%>二、用Excel的Application组件在客户端导出到Excel或Word 注意:两个函数中的“data“是网页中要导出的table的 id导出到Excel代码导出到Word代码三、直接在IE中打开,再存为EXCEL文件把读出的数据用格式,在网页中显示出来,同时,加上下一句即可把EXCEL表在客客户端显示。

使用Aspose.Cells实现导入导出

使用Aspose.Cells实现导入导出

使⽤Aspose.Cells实现导⼊导出本⽂实例为⼤家分享了Aspose.Cells实现导⼊导出的具体代码,供⼤家参考,具体内容如下这是⾃⼰整理的导⼊导出类,⾥⾯有注释。

using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using Aspose.Cells;namespace mon.ExcelUtil{////// excel操作基类//////public class BaseExcelUtil{private Workbook m_Wb = null;////// ⽣成Excel////// 模板Excel的路径+⽂件名/// Excel⽂件的字节对象public byte[] CreateExcel(string url){FileStream fs = null;try{//读取模板Excel⽂件的中内容fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.Read);m_Wb = new Workbook();m_Wb.Open(fs);setValue(m_Wb);//转换为字节对象并返回return m_Wb.SaveToStream().ToArray();}catch (Exception ex){throw ex;}finally{fs.Close();}}////// 设定Excel中的数据/// 数据源为datable类型////// ⼯作簿public virtual void setValue(Workbook wb){throw new Exception("The method or operation is not implemented.");}////// 读取Excel////// Excel的路径+⽂件名/// Excel⽂件的字节对象public DataTable GetExcel(string url){FileStream fs = null;try{//读取Excel⽂件的中内容fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.Read);m_Wb = new Workbook();m_Wb.Open(fs);//设定Excel中的数据return getValue(m_Wb);}finally{fs.Close();}}////// 取得Excel中的数据////// ⼯作簿public virtual DataTable getValue(Workbook wb){throw new Exception("The method or operation is not implemented.");}////// 设置字符串值/////////public void putValue(Cell c, object value){try{if (value == null || object.Equals(value, DBNull.Value) || value.ToString().Trim().Length == 0) {}else{c.PutValue(value.ToString());}}catch (Exception){c.PutValue("--");}}////// 设置数值值/////////public void putValueDouble(Cell c, object value){try{if (value == null || object.Equals(value, DBNull.Value) || value.ToString().Trim().Length == 0) {}else{c.PutValue(Decimal.Parse(value.ToString()));}}catch (Exception)c.PutValue(value.ToString());}}////// 设置⽇期值/////////public void putDateValue(Cell c, object value){try{if (value == null || object.Equals(value, DBNull.Value) || value.ToString().Trim().Length == 0) {}else{c.PutValue(DateTime.Parse(value.ToString()));}}catch (Exception){c.PutValue(value.ToString());}}}}////实现基类using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;using Aspose.Cells;namespace mon.ExcelUtil{////// Excel帮助类///public class ExcelUtil :BaseExcelUtil{private DataTable dt;private string title;public ExcelUtil() {}////// 从第⼏⾏开始读取///public int FirstRow { get; set; }////// 从第⼏列开始读取///public int FirstColumns { get; set; }////// excel标题///public string Title{get { return title; }set { title = value; }}private string fileName;////// ⽂件名///public string FileName{get { return fileName; }set { fileName = value; }}public DataTable Dt{get { return dt; }set { dt = value; }}public bool Flag{set;get;}/////////导出设定值public override void setValue(Workbook wb){int index = 0;Worksheet ws = null;int rcount = dt.Rows.Count, columns = dt.Columns.Count; if (dt != null && dt.Rows.Count > 0){index = wb.Worksheets.AddCopy(0);ws = wb.Worksheets[index]; = FileName.Replace(".xls", "");try{putValue(ws.Cells[0, 0], this.title);int i = 1;for (int j = 0; j < columns; j++){putValue(ws.Cells[1, j], dt.Columns[j].ColumnName); }for (int j = 0; j < rcount; j++){i++;for (int h = 0; h < columns; h++){putValue(ws.Cells[i, h], dt.Rows[j][h].ToString());}}wb.Worksheets.RemoveAt(0);}catch (Exception ex){throw ex;}}}////// 导⼊excel////// 读取的⽂件名/// 从第⼏⾏开始读取/// 从第⼏列开始读取//////public override DataTable getValue(Workbook wb){Worksheet sheet = wb.Worksheets[0];Cells cells = sheet.Cells;return cells.ExportDataTableAsString(FirstRow, FirstColumns, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);}}}/////导出调⽤⽅法public ActionResult ToExcel() {List list = new List();for (int i = 0; i < 100; i++){UserInfo info = new UserInfo();info.Age = i.ToString();info.ID = i; = "姓名" + i;list.Add(info);}///将list类型转换为datatableDataTable dt= DataTableHelper.IListToDataTable(list);//实例化帮助类ExcelUtil exc = new ExcelUtil();exc.Dt = dt;exc.FileName = "导出测试.xls";exc.Title = "导出测试";//需要写⼊的模板string url = Server.MapPath("/Content/Down/template.xls");byte[] data = exc.CreateExcel(url);//浏览器下载⽂件Response.AppendHeader("Content-Disposition", "attachment; filename=" + exc.FileName);//HttpUtility.UrlEncode(r.FileName, Encoding.UTF8)); Response.ContentType = "application/ms-excel";Response.AddHeader("Content-Length", data.Length.ToString());Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");Response.BinaryWrite(data);pleteRequest();return Content("ss");}///导⼊调⽤⽅法public ActionResult ImportExcel(){string url = Server.MapPath("/Content/Down/Import.xls");ExcelUtil exc = new ExcelUtil();exc.FirstRow = 1;exc.FirstColumns = 0;DataTable dt= exc.GetExcel(url);return Content("ss");}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

ASP将Excel数据导入到SQLServer的实现代码

ASP将Excel数据导入到SQLServer的实现代码

ASP将Excel数据导⼊到SQLServer的实现代码复制代码代码如下:<form action="insert.asp" method="post" enctype="multipart/form-data" name="form1" onSubmit="b1_onclick()"> <table width="500" border="1" align="center" cellpadding="0" cellspacing="0"><tr><td colspan="2" bgcolor="#999999" class="t">选择⽂件</td></tr><tr><td colspan="2" class="t">&nbsp;</td></tr><tr><td width="126" class="t">选择⽂件(excel)</td><td width="368" class="t"><label><input name="filexls" type="file" size="35"></label></td></tr><tr><td colspan="2" class="t"><label><input type="submit" name="Submit" value="导⼊数据"></label><a href="1122.asp" class="t">返回</a></td></tr></table></form><!--#include virtual="/inc/clsdbctrl.asp"--><!--#include virtual="/inc/function.asp"--><%dim upfile_5xSoft_StreamClass upload_5xSoftdim Form,File,VersionPrivate Sub Class_Initializedim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFiledim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStrVersion="任翔专⽤上传程序"if Request.TotalBytes<1 then Exit Subset Form=CreateObject("Scripting.Dictionary")set File=CreateObject("Scripting.Dictionary")set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.mode=3upfile_5xSoft_Stream.type=1upfile_5xSoft_Stream.openupfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)vbEnter=Chr(13)&Chr(10)iDivLen=inString(1,vbEnter)+1strDiv=subString(1,iDivLen)iFormStart=iDivLeniFormEnd=inString(iformStart,strDiv)-1while iFormStart < iFormEndiStart=inString(iFormStart,"name=""")iEnd=inString(iStart+6,"""")mFormName=subString(iStart+6,iEnd-iStart-6)iFileNameStart=inString(iEnd+1,"filename=""")if iFileNameStart>0 and iFileNameStart<iFormEnd theniFileNameEnd=inString(iFileNameStart+10,"""")iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFileSize=iEnd-iStart-4elsemFileSize=0end ifset theFile=new FileInfotheFile.FileName=getFileName(mFileName)theFile.FilePath=getFilePath(mFileName)theFile.FileSize=mFileSizetheFile.FileStart=iStart+4theFile.FormName=FormNamefile.add mFormName,theFileelseiStart=inString(iEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFormValue=subString(iStart+4,iEnd-iStart-4)elsemFormValue=""end ifform.Add mFormName,mFormValueend ifiFormStart=iformEnd+iDivLeniFormEnd=inString(iformStart,strDiv)-1wendEnd SubPrivate Function subString(theStart,theLen)dim i,c,stempupfile_5xSoft_Stream.Position=theStart-1stemp=""for i=1 to theLenif upfile_5xSoft_Stream.EOS then Exit forc=ascB(upfile_5xSoft_Stream.Read(1))If c > 127 Thenif upfile_5xSoft_Stream.EOS then Exit forstemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c))) i=i+1elsestemp=stemp&Chr(c)End IfNextsubString=stempEnd functionPrivate Function inString(theStart,varStr)dim i,j,bt,theLen,strInString=0Str=toByte(varStr)theLen=LenB(Str)for i=theStart to upfile_5xSoft_Stream.Size-theLenif i>upfile_5xSoft_Stream.size then exit Functionupfile_5xSoft_Stream.Position=i-1if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) thenInString=ifor j=2 to theLenif upfile_5xSoft_Stream.EOS theninString=0Exit forend ifif AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) thennextif InString<>0 then Exit Functionend ifnextEnd FunctionPrivate Sub Class_Terminateform.RemoveAllfile.RemoveAllset form=nothingset file=nothingupfile_5xSoft_Stream.closeset upfile_5xSoft_Stream=nothingEnd SubPrivate function GetFilePath(FullPath)If FullPath <> "" ThenGetFilePath = left(FullPath,InStrRev(FullPath, "\"))ElseGetFilePath = ""End IfEnd functionPrivate function GetFileName(FullPath)If FullPath <> "" ThenGetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)ElseGetFileName = ""End IfEnd functionPrivate function toByte(Str)dim i,iCode,c,iLow,iHightoByte=""For i=1 To Len(Str)c=mid(Str,i,1)iCode =Asc(c)If iCode<0 Then iCode = iCode + 65535If iCode>255 TheniLow = Left(Hex(Asc(c)),2)iHigh =Right(Hex(Asc(c)),2)toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)ElsetoByte = toByte & chrB(AscB(c))End IfNextEnd functionEnd ClassClass FileInfodim FormName,FileName,FilePath,FileSize,FileStartPrivate Sub Class_InitializeFileName = ""FilePath = ""FileSize = 0FileStart= 0FormName = ""End SubPublic function SaveAs(FullPath)dim dr,ErrorChar,iSaveAs=1if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function if FileStart=0 or right(fullpath,1)="/" then exit functionset dr=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.position=FileStart-1upfile_5xSoft_Stream.copyto dr,FileSizedr.SaveToFile FullPath,2dr.Closeset dr=nothingSaveAs=0end functionEnd Class%><%function sqlstr(data)if not isnull(data) thensqlstr="'"& replace(data,"'","''") &"'"elsesqlstr="'"& data &"'"end ifend function%><%session.CodePage=936Server.ScriptTimeOut=600000set upload=new upload_5xsoftset file=upload.file("filexls")%><%if file.fileSize>0 thenfilename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)filename=filename+"."filenameend=file.filenamefilenameshow=file.filenamefilenameend=split(filenameend,".")if filenameend(1)="xls" thenfilename=filename&filenameend(1)file.saveAs Server.mappath("uploadfiles/"&filename)elseresponse.write "数据格式不对!"response.write "<a href=file_upload.asp>返回"response.end()end ifset file=nothingelseresponse.write "⽂件不能为空!"response.write "<a href=file_upload.asp>返回"response.end()End ifset upload=nothing'上传XLS⽂件结束,下⾯从上传的XLS⽂件中读取数据写⼊到SQL数据库strAddr=server.MapPath("uploadfiles/"&filename)set excelconn=server.createobject("adodb.connection")excelconn.open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+strAddr+";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"set rs=server.CreateObject("adodb.recordset")set rs1=server.CreateObject("adodb.recordset")sql="select * from [Sheet1$]"rs.open sql,excelconn,1,3if not(rs.bof and rs.eof) thenrs.movenextdo while not rs.eof'response.Write(rs(1))sql1="select * from member"rs1.open sql1,conn,1,3rs1.addnewRandomizeusername=""Do While Len(username)<8 '随机密码位数num1=CStr(Chr((57-48)*rnd+48)) '0~9'num2=CStr(Chr((90-65)*rnd+65)) 'A~Znum3=CStr(Chr((122-97)*rnd+97)) 'a~zusername=username&num1&num3looprs1("username")=usernamers1("password")="bb0391ec1d7bda99"'bamboo123456 if rs(0)<>"" thenrs1("company")=rs(0)end ifif rs(1)<>"" thenrs1("realname")=rs(1)end ifif rs(2)<>"" thenrs1("sex")=sexn(rs(2))end ifif rs(3)<>"" thenrs1("prof")=rs(3)end ifif rs(4)<>"" thenrs1("tel")=rs(4)end ifif rs(5)<>"" thenrs1("mobile")=rs(5)end ifif rs(6)<>"" thenrs1("address")=rs(6)end ifif rs(7)<>"" thenrs1("area")=getclassdname(rs(7),"area","cn")end ifif rs(8)<>"" thenrs1("city")=getclassdname(rs(8),"area","cn")end ifif rs(9)<>"" thenrs1("fax")=rs(9)end ifif rs(10)<>"" thenrs1("comtype")=comtypem(rs(10))end ifif rs(11)<>"" thenrs1("operation")=rs(11)end ifrs1("passed")=1rs1("activated")=1rs1("lastlogintime")=now()rs1.updaters1.closers.movenextloopend ifrs.close()set rs=nothingset rs1=nothingexcelconn.Close()conn.close()set conn=nothingfunction sexn(str)select case strcase "男"sexn=0case "⼥"sexn=1end selectend functionfunction comtypem(str)select case strcase "⽵制品"comtypem=0case "⽵机械"comtypem=1end selectend functionfunction getclassdname(str,tablename,lang)If Not IsNumeric(id) Then Exit Functionset rs2=conn.execute ("select top 1 id from "& tablename &" where classname like '%"&str&"%'")if not rs2.eof ThenIf lang<>"" ThenIf lang="cn" Thengetclassdname=getclassdname & rs2(0)ElseIf lang="en" Thengetclassdname=getclassdname & rs2(0)End IfEnd Ifelsegetclassdname=0end ifrs2.closeEnd Function%><table width="300" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC"> <tr><th bordercolor="#F1F3F8" bgcolor="#999999" class="t" scope="row">&nbsp;</th></tr><tr><th class="t" scope="row">⽂件<% response.write (filenameshow) %>导⼊成功!</th></tr><tr><th class="t" scope="row"><a href="javascript:self.close()" class="t">关闭窗⼝</a></th></tr><tr><th class="t" scope="row"><a href="1122.asp" class="t">返回</a></th></tr></table>。

[Asp.net]C#操作Excel的几种方式优缺点比较

[Asp.net]C#操作Excel的几种方式优缺点比较

[]C#操作Excel的⼏种⽅式优缺点⽐较在项⽬中我们常常需要将数据库中的数据导出成Excel⽂件有⼀次⼯作中我的⽬的就是读取Excel到内存中,整理成指定格式整理后再导出到Excel。

因为我要处理的每个Excel表格⽂件很⼤。

⼀个表格多个sheet,每个sheet-⼀千到上W⾏不等。

列数超过300列。

所有在这⾥我将在使⽤⼀些处理Excel的⽅法的时候,所遇到的⼀些问题记录下来,也做⼀个⼤致的⽐较。

主要是针对此次数据处理NPOI⽬前⽐较流⾏的⼀款操作Excel的组件。

移植于Java的POI,是⼀个开源项⽬,对Excel的操作很全⾯。

官⽹优势:1、免费2、机器不⽤安装Office也可以直接操作Excel,免去很多事。

3、现在已⾄此的⽂件格式包括Excel2003和2007之后的xls,xlsx以及docx。

4、⽀持⽂件的导⼊和导出5、⽹上有丰富的实例代码,遇到基本的问题可以上⽹参考⽹友的解决⽅法。

6、NPOI能⽀持绝⼤多数Excel⾥⾯的功能操作(Excel内的公式函数、设置单元格的格式样式)7、导⼊导出速度快。

内存占⽤⼤。

特定优势:⽀持读取超过256列的Excel表格。

缺点:参考⽬前很多⽹上的⽂档,npoi导出xlsx,使⽤ XSSFWorkbook 使⽤ Write ⽅法写⼊内存流后,返回的 MemoryStream 已经被关闭了,不能再使⽤了。

你需要花⼀点时间解决这个问题。

可以参考:xlsx格式导出推荐使⽤Epplus组件NPOI辅助类:1 using System;2 using System.Collections;3 using System.Collections.Generic;4 using System.Text;5 using System.IO;6 using System.Data;7 using System.Windows.Forms;8 using erModel;9 using erModel;10 using erModel;1112 namespace TEMS.Service13 {14 public static class ExcelHelperForCs15 {16 #region 私有⽅法1718 /// <summary>19 /// 获取要保存的⽂件名称(含完整路径)20 /// </summary>21 /// <returns></returns>22 private static string GetSaveFilePath()23 {24 SaveFileDialog saveFileDig = new SaveFileDialog();25 saveFileDig.Filter = "Excel Office97-2003(*.xls)|*.xls|Excel Office2007及以上(*.xlsx)|*.xlsx";26 saveFileDig.FilterIndex = 0;28 saveFileDig.OverwritePrompt = true;29 saveFileDig.InitialDirectory = Common.DesktopDirectory;30 string filePath = null;31 if (saveFileDig.ShowDialog() == DialogResult.OK)32 {33 filePath = saveFileDig.FileName;34 }3536 return filePath;37 }3839 /// <summary>40 /// 获取要打开要导⼊的⽂件名称(含完整路径)41 /// </summary>42 /// <returns></returns>43 private static string GetOpenFilePath()44 {45 OpenFileDialog openFileDig = new OpenFileDialog();46 openFileDig.Filter = "Excel Office97-2003(*.xls)|*.xls|Excel Office2007及以上(*.xlsx)|*.xlsx";47 openFileDig.FilterIndex = 0;48 openFileDig.Title = "打开";49 openFileDig.CheckFileExists = true;50 openFileDig.CheckPathExists = true;51 openFileDig.InitialDirectory = Common.DesktopDirectory;52 string filePath = null;53 if (openFileDig.ShowDialog() == DialogResult.OK)54 {55 filePath = openFileDig.FileName;56 }5758 return filePath;59 }6061 /// <summary>62 /// 判断是否为兼容模式63 /// </summary>64 /// <param name="filePath"></param>65 /// <returns></returns>66 private static bool GetIsCompatible(string filePath)67 {68 return filePath.EndsWith(".xls", StringComparison.OrdinalIgnoreCase);69 }7071 /// <summary>72 /// 创建⼯作薄73 /// </summary>74 /// <param name="isCompatible"></param>75 /// <returns></returns>76 private static IWorkbook CreateWorkbook(bool isCompatible)77 {78 if (isCompatible)79 {80 return new HSSFWorkbook();81 }82 else83 {84 return new XSSFWorkbook();85 }86 }8788 /// <summary>89 /// 创建⼯作薄(依据⽂件流)90 /// </summary>91 /// <param name="isCompatible"></param>92 /// <param name="stream"></param>93 /// <returns></returns>94 private static IWorkbook CreateWorkbook(bool isCompatible, dynamic stream)95 {96 if (isCompatible)97 {98 return new HSSFWorkbook(stream);99 }100 else101 {102 return new XSSFWorkbook(stream);103 }104 }105106 /// <summary>107 /// 创建表格头单元格108 /// </summary>109 /// <param name="sheet"></param>110 /// <returns></returns>111 private static ICellStyle GetCellStyle(IWorkbook workbook)112 {113 ICellStyle style = workbook.CreateCellStyle();114 style.FillPattern = FillPattern.SolidForeground;115 style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Grey25Percent.Index;116117 return style;118 }120 /// <summary>121 /// 从⼯作表中⽣成DataTable122 /// </summary>123 /// <param name="sheet"></param>124 /// <param name="headerRowIndex"></param>125 /// <returns></returns>126 private static DataTable GetDataTableFromSheet(ISheet sheet, int headerRowIndex) 127 {128 DataTable table = new DataTable();129130 IRow headerRow = sheet.GetRow(headerRowIndex);131 int cellCount = stCellNum;132133 for (int i = headerRow.FirstCellNum; i < cellCount; i++)134 {135 if (headerRow.GetCell(i) == null || headerRow.GetCell(i).StringCellValue.Trim() == "") 136 {137 // 如果遇到第⼀个空列,则不再继续向后读取138 cellCount = i;139 break;140 }141 DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue); 142 table.Columns.Add(column);143 }144145 for (int i = (headerRowIndex + 1); i <= stRowNum; i++)146 {147 IRow row = sheet.GetRow(i);148 //如果遇到某⾏的第⼀个单元格的值为空,则不再继续向下读取149 if (row != null && !string.IsNullOrEmpty(row.GetCell(0).ToString()))150 {151 DataRow dataRow = table.NewRow();152153 for (int j = row.FirstCellNum; j < cellCount; j++)154 {155 dataRow[j] = row.GetCell(j).ToString();156 }157158 table.Rows.Add(dataRow);159 }160 }161162 return table;163 }164165 #endregion166167 #region 公共导出⽅法168169 /// <summary>170 /// 由DataSet导出Excel171 /// </summary>172 /// <param name="sourceTable">要导出数据的DataTable</param>173 /// <returns>Excel⼯作表</returns>174 public static string ExportToExcel(DataSet sourceDs, string filePath = null)175 {176177 if (string.IsNullOrEmpty(filePath))178 {179 filePath = GetSaveFilePath();180 }181182 if (string.IsNullOrEmpty(filePath)) return null;183184 bool isCompatible = GetIsCompatible(filePath);185186 IWorkbook workbook = CreateWorkbook(isCompatible);187 ICellStyle cellStyle = GetCellStyle(workbook);188189 for (int i = 0; i < sourceDs.Tables.Count; i++)190 {191 DataTable table = sourceDs.Tables[i];192 string sheetName = "result" + i.ToString();193 ISheet sheet = workbook.CreateSheet(sheetName);194 IRow headerRow = sheet.CreateRow(0);195 // handling header.196 foreach (DataColumn column in table.Columns)197 {198 ICell cell = headerRow.CreateCell(column.Ordinal);199 cell.SetCellValue(column.ColumnName);200 cell.CellStyle = cellStyle;201 }202203 // handling value.204 int rowIndex = 1;205206 foreach (DataRow row in table.Rows)207 {208 IRow dataRow = sheet.CreateRow(rowIndex);209210 foreach (DataColumn column in table.Columns)212 dataRow.CreateCell(column.Ordinal).SetCellValue((row[column] ?? "").ToString());213 }214215 rowIndex++;216 }217 }218219 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);220 workbook.Write(fs);221 fs.Dispose();222 workbook = null;223224 return filePath;225226 }227228 /// <summary>229 /// 由DataTable导出Excel230 /// </summary>231 /// <param name="sourceTable">要导出数据的DataTable</param>232 /// <returns>Excel⼯作表</returns>233 public static string ExportToExcel(DataTable sourceTable, string sheetName = "result", string filePath = null)234 {235 if (sourceTable.Rows.Count <= 0) return null;236237 if (string.IsNullOrEmpty(filePath))238 {239 filePath = GetSaveFilePath();240 }241242 if (string.IsNullOrEmpty(filePath)) return null;243244 bool isCompatible = GetIsCompatible(filePath);245246 IWorkbook workbook = CreateWorkbook(isCompatible);247 ICellStyle cellStyle = GetCellStyle(workbook);248249 ISheet sheet = workbook.CreateSheet(sheetName);250 IRow headerRow = sheet.CreateRow(0);251 // handling header.252 foreach (DataColumn column in sourceTable.Columns)253 {254 ICell headerCell = headerRow.CreateCell(column.Ordinal);255 headerCell.SetCellValue(column.ColumnName);256 headerCell.CellStyle = cellStyle;257 }258259 // handling value.260 int rowIndex = 1;261262 foreach (DataRow row in sourceTable.Rows)263 {264 IRow dataRow = sheet.CreateRow(rowIndex);265266 foreach (DataColumn column in sourceTable.Columns)267 {268 dataRow.CreateCell(column.Ordinal).SetCellValue((row[column]??"").ToString());269 }270271 rowIndex++;272 }273 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);274 workbook.Write(fs);275 fs.Dispose();276277 sheet = null;278 headerRow = null;279 workbook = null;280281 return filePath;282 }283284 /// <summary>285 /// 由List导出Excel286 /// </summary>287 /// <typeparam name="T">类型</typeparam>288 /// <param name="data">在导出的List</param>289 /// <param name="sheetName">sheet名称</param>290 /// <returns></returns>291 public static string ExportToExcel<T>(List<T> data, IList<KeyValuePair<string, string>> headerNameList, string sheetName = "result", string filePath = null) where T : class 292 {293 if (data.Count <= 0) return null;294295 if (string.IsNullOrEmpty(filePath))296 {297 filePath = GetSaveFilePath();298 }299300 if (string.IsNullOrEmpty(filePath)) return null;301302 bool isCompatible = GetIsCompatible(filePath);304 IWorkbook workbook = CreateWorkbook(isCompatible);305 ICellStyle cellStyle = GetCellStyle(workbook);306 ISheet sheet = workbook.CreateSheet(sheetName);307 IRow headerRow = sheet.CreateRow(0);308309 for (int i = 0; i < headerNameList.Count; i++)310 {311 ICell cell = headerRow.CreateCell(i);312 cell.SetCellValue(headerNameList[i].Value);313 cell.CellStyle = cellStyle;314 }315316 Type t = typeof(T);317 int rowIndex = 1;318 foreach (T item in data)319 {320 IRow dataRow = sheet.CreateRow(rowIndex);321 for (int n = 0; n < headerNameList.Count; n++)322 {323 object pValue = t.GetProperty(headerNameList[n].Key).GetValue(item, null);324 dataRow.CreateCell(n).SetCellValue((pValue ?? "").ToString());325 }326 rowIndex++;327 }328 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);329 workbook.Write(fs);330 fs.Dispose();331332 sheet = null;333 headerRow = null;334 workbook = null;335336 return filePath;337 }338339 /// <summary>340 /// 由DataGridView导出341 /// </summary>342 /// <param name="grid"></param>343 /// <param name="sheetName"></param>344 /// <param name="filePath"></param>345 /// <returns></returns>346 public static string ExportToExcel(DataGridView grid, string sheetName = "result", string filePath = null) 347 {348 if (grid.Rows.Count <= 0) return null;349350 if (string.IsNullOrEmpty(filePath))351 {352 filePath = GetSaveFilePath();353 }354355 if (string.IsNullOrEmpty(filePath)) return null;356357 bool isCompatible = GetIsCompatible(filePath);358359 IWorkbook workbook = CreateWorkbook(isCompatible);360 ICellStyle cellStyle = GetCellStyle(workbook);361 ISheet sheet = workbook.CreateSheet(sheetName);362363 IRow headerRow = sheet.CreateRow(0);364365 for (int i = 0; i < grid.Columns.Count; i++)366 {367 ICell cell = headerRow.CreateCell(i);368 cell.SetCellValue(grid.Columns[i].HeaderText);369 cell.CellStyle = cellStyle;370 }371372 int rowIndex = 1;373 foreach (DataGridViewRow row in grid.Rows)374 {375 IRow dataRow = sheet.CreateRow(rowIndex);376 for (int n = 0; n < grid.Columns.Count; n++)377 {378 dataRow.CreateCell(n).SetCellValue((row.Cells[n].Value ?? "").ToString());379 }380 rowIndex++;381 }382383 FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);384 workbook.Write(fs);385 fs.Dispose();386387 sheet = null;388 headerRow = null;389 workbook = null;390391 return filePath;392 }393394 #endregion396 #region 公共导⼊⽅法397398 /// <summary>399 /// 由Excel导⼊DataTable400 /// </summary>401 /// <param name="excelFileStream">Excel⽂件流</param>402 /// <param name="sheetName">Excel⼯作表名称</param>403 /// <param name="headerRowIndex">Excel表头⾏索引</param>404 /// <param name="isCompatible">是否为兼容模式</param>405 /// <returns>DataTable</returns>406 public static DataTable ImportFromExcel(Stream excelFileStream, string sheetName, int headerRowIndex, bool isCompatible) 407 {408 IWorkbook workbook = CreateWorkbook(isCompatible, excelFileStream);409 ISheet sheet = null;410 int sheetIndex = -1;411 if (int.TryParse(sheetName, out sheetIndex))412 {413 sheet = workbook.GetSheetAt(sheetIndex);414 }415 else416 {417 sheet = workbook.GetSheet(sheetName);418 }419420 DataTable table = GetDataTableFromSheet(sheet, headerRowIndex);421422 excelFileStream.Close();423 workbook = null;424 sheet = null;425 return table;426 }427428 /// <summary>429 /// 由Excel导⼊DataTable430 /// </summary>431 /// <param name="excelFilePath">Excel⽂件路径,为物理路径。

ASP导出Excel数据的四种方法

ASP导出Excel数据的四种方法

ASP导出‎E xcel‎数据的四种‎方法‎什么是OW‎C?‎OWC是‎O ffic‎e Web‎Comp‎e nt的缩‎写,即Mi‎c roso‎f t的Of‎f ice ‎W eb组件‎,它为在W‎e b中绘制‎图形提供了‎灵活的同时‎也是最基本‎的机制。

在‎一个int‎r anet‎环境中,如‎果可以假设‎客户机上存‎在特定的浏‎览器和一些‎功能强大的‎软件(如I‎E5和Of‎f ice ‎2000)‎,那么就有‎能力利用O‎f fice‎Web组‎件提供一个‎交互式图形‎开发环境。

‎这种模式下‎,客户端工‎作站将在整‎个任务中分‎担很大的比‎重。

‎<%Opt‎i on E‎x plic‎i tC‎l ass ‎E xcel‎G en‎P riva‎t e ob‎j Spre‎a dshe‎e tP‎r ivat‎e iCo‎l Offs‎e t‎P riva‎t e iR‎o wOff‎s et‎S ub C‎l ass_‎I niti‎a lize‎()S‎e t ob‎j Spre‎a dshe‎e t = ‎S erve‎r.Cre‎a teOb‎j ect(‎"OWC.‎S prea‎d shee‎t")‎i RowO‎f fset‎= 2 ‎iCol‎O ffse‎t = 2‎End‎Sub ‎Sub‎Clas‎s_Ter‎m inat‎e()‎S et o‎b jSpr‎e adsh‎e et =‎Noth‎i ng '‎C lean‎up‎E nd S‎u b‎P ubli‎c Pro‎p erty‎Let ‎C olum‎n Offs‎e t(iC‎o lOff‎)If‎iCol‎O ff >‎0 th‎e ni‎C olOf‎f set ‎= iCo‎l Off ‎Else‎iCo‎l Offs‎e t = ‎2En‎d If ‎End ‎P rope‎r ty‎Publ‎i c Pr‎o pert‎y Let‎RowO‎f fset‎(iRow‎O ff) ‎If i‎R owOf‎f> 0‎then‎iRo‎w Offs‎e t = ‎i RowO‎f fE‎l se‎i RowO‎f fset‎= 2 ‎End ‎I fE‎n d Pr‎o pert‎y Sub‎Gene‎r ateW‎o rksh‎e et(o‎b jRS)‎'Po‎p ulat‎e s th‎e Exc‎e l wo‎r kshe‎e t ba‎s ed o‎n a R‎e cord‎s et's‎cont‎e nts ‎'Sta‎r t by‎disp‎l ayin‎g the‎titl‎e sI‎f obj‎R S.EO‎F the‎n Exi‎t Sub‎Dim‎objF‎i eld,‎iCol‎, iRo‎wiC‎o l = ‎i ColO‎f fset‎iRo‎w = i‎R owOf‎f set ‎For ‎E ach ‎o bjFi‎e ld i‎n obj‎R S.Fi‎e lds ‎objS‎p read‎s heet‎.Cell‎s(iRo‎w, iC‎o l).V‎a lue ‎= obj‎F ield‎.Name‎obj‎S prea‎d shee‎t.Col‎u mns(‎i Col)‎.Auto‎F itCo‎l umns‎'设置‎E xcel‎表里的字体‎obj‎S prea‎d shee‎t.Cel‎l s(iR‎o w, i‎C ol).‎F ont.‎B old ‎= Tru‎eob‎j Spre‎a dshe‎e t.Ce‎l ls(i‎R ow, ‎i Col)‎.Font‎.Ital‎i c = ‎F alse‎obj‎S prea‎d shee‎t.Cel‎l s(iR‎o w, i‎C ol).‎F ont.‎S ize ‎= 10 ‎objS‎p read‎s heet‎.Cell‎s(iRo‎w, iC‎o l).H‎a lign‎m ent ‎= 2 '‎居中i‎C ol =‎iCol‎+ 1 ‎Next‎'obj‎F ield‎'Di‎s play‎all ‎o f th‎e dat‎aDo‎Whil‎e Not‎objR‎S.EOF‎iRo‎w = i‎R ow +‎1i‎C ol =‎iCol‎O ffse‎tFo‎r Eac‎h obj‎F ield‎in o‎b jRS.‎F ield‎sIf‎IsNu‎l l(ob‎j Fiel‎d.Val‎u e) t‎h en‎o bjSp‎r eads‎h eet.‎C ells‎(iRow‎, iCo‎l).Va‎l ue =‎""‎E lse ‎objS‎p read‎s heet‎.Cell‎s(iRo‎w, iC‎o l).V‎a lue ‎= obj‎F ield‎.Valu‎eob‎j Spre‎a dshe‎e t.Co‎l umns‎(iCol‎).Aut‎o FitC‎o lumn‎sob‎j Spre‎a dshe‎e t.Ce‎l ls(i‎R ow, ‎i Col)‎.Font‎.Bold‎= Fa‎l se‎o bjSp‎r eads‎h eet.‎C ells‎(iRow‎, iCo‎l).Fo‎n t.It‎a lic ‎= Fal‎s eo‎b jSpr‎e adsh‎e et.C‎e lls(‎i Row,‎iCol‎).Fon‎t.Siz‎e = 1‎0En‎d If ‎iCol‎= iC‎o l + ‎1Ne‎x t 'o‎b jFie‎l do‎b jRS.‎M oveN‎e xt‎L oop ‎End ‎S ub F‎u ncti‎o n Sa‎v eWor‎k shee‎t(str‎F ileN‎a me) ‎'Sa‎v e th‎e wor‎k shee‎t to ‎a spe‎c ifie‎d fil‎e name‎On ‎E rror‎Resu‎m e Ne‎x tC‎a ll o‎b jSpr‎e adsh‎e et.A‎c tive‎S heet‎.Expo‎r t(st‎r File‎N ame,‎0)‎S aveW‎o rksh‎e et =‎(Err‎.Numb‎e r = ‎0)E‎n d Fu‎n ctio‎nEn‎d Cla‎s s‎D im o‎b jRS ‎Set ‎o bjRS‎= Se‎r ver.‎C reat‎e Obje‎c t("A‎D ODB.‎R ecor‎d set"‎)ob‎j RS.O‎p en "‎S ELEC‎T * F‎R OM x‎x xx",‎"Pro‎v ider‎=SQLO‎L EDB.‎1;Per‎s ist ‎S ecur‎i ty ‎Info‎=True‎;User‎ID=x‎x xx;P‎a sswo‎r d=xx‎x x;In‎i tial‎Cata‎l og=x‎x xx;D‎a ta s‎o urce‎=xxxx‎;" D‎i m Sa‎v eNam‎eSa‎v eNam‎e = R‎e ques‎t.Coo‎k ies(‎"save‎n ame"‎)("na‎m e") ‎Dim ‎o bjEx‎c el‎D im E‎x celP‎a th‎E xcel‎P ath ‎= "Ex‎c el\"‎& Sa‎v eNam‎e & "‎.xls"‎Set‎objE‎x cel ‎= New‎Exce‎l Gen ‎objE‎x cel.‎R owOf‎f set ‎= 1‎o bjEx‎c el.C‎o lumn‎O ffse‎t = 1‎obj‎E xcel‎.Gene‎r ateW‎o rksh‎e et(o‎b jRS)‎If ‎o bjEx‎c el.S‎a veWo‎r kshe‎e t(Se‎r ver.‎M apPa‎t h(Ex‎c elPa‎t h)) ‎t hen ‎'Res‎p onse‎.Writ‎e "<h‎t ml><‎b ody ‎b gcol‎o r='g‎a insb‎o ro' ‎t ext=‎'#000‎000'>‎已保存为E‎x cel 文‎件.‎<a hr‎e f='"‎& se‎r ver.‎U RLEn‎c ode(‎E xcel‎P ath)‎& "'‎>下载</‎a>"‎E lse ‎Resp‎o nse.‎W rite‎"在保存‎过程中有错‎误!"‎E nd I‎fSe‎t obj‎E xcel‎= No‎t hing‎obj‎R S.Cl‎o se‎S et o‎b jRS ‎= Not‎h ing ‎%>‎二、‎用Exce‎l的App‎l icat‎i on组件‎在客户端导‎出到Exc‎e l或Wo‎r d‎注意:两个‎函数中的“‎d ata“‎是网页中要‎导出的ta‎b le的‎i d<‎i nput‎type‎="hid‎d en" ‎n ame=‎"out_‎w ord"‎oncl‎i ck="‎v bscr‎i pt:b‎u ildD‎o c" v‎a lue=‎"导出到w‎o rd" ‎c lass‎="not‎P rint‎"><‎i nput‎type‎="hid‎d en" ‎n ame=‎"out_‎e xcel‎" onc‎l ick=‎"Auto‎m ateE‎x cel(‎);" v‎a lue=‎"导出到e‎x cel"‎clas‎s="no‎t Prin‎t">‎导‎出到Exc‎e l代码‎<SCR‎I PT L‎A NGUA‎G E="j‎a vasc‎r ipt"‎><!‎--f‎u ncti‎o n Au‎t omat‎e Exce‎l()‎{//‎Star‎t Exc‎e l an‎d get‎Appl‎i cati‎o n ob‎j ect.‎var‎oXL ‎= new‎Acti‎v eXOb‎j ect(‎"Exce‎l.App‎l icat‎i on")‎;//‎Get ‎a new‎work‎b ook.‎var‎oWB ‎= oXL‎.Work‎b ooks‎.Add(‎);v‎a r oS‎h eet ‎= oWB‎.Acti‎v eShe‎e t;‎v ar t‎a ble ‎= doc‎u ment‎.all.‎d ata;‎var‎hang‎= ta‎b le.r‎o ws.l‎e ngth‎;v‎a r li‎e = t‎a ble.‎r ows(‎0).ce‎l ls.l‎e ngth‎;/‎/ Add‎tabl‎e hea‎d ers ‎g oing‎cell‎by c‎e ll. ‎for ‎(i=0;‎i<han‎g;i++‎){ ‎for ‎(j=0;‎j<lie‎;j++)‎‎o Shee‎t.Cel‎l s(i+‎1,j+1‎).val‎u e = ‎t able‎.rows‎(i).c‎e lls(‎j).in‎n erTe‎x t;‎}}‎oXL‎.Visi‎b le =‎true‎;oX‎e‎r Cont‎r ol =‎true‎;} ‎//--‎></‎S CRIP‎T>‎导出‎到Word‎代码<‎s crip‎t lan‎g uage‎="vbs‎c ript‎">S‎u b bu‎i ldDo‎cse‎t tab‎l e = ‎d ocum‎e nt.a‎l l.da‎t ar‎o w = ‎t able‎.rows‎.leng‎t hc‎o lumn‎= ta‎b le.r‎o ws(1‎).cel‎l s.le‎n gth ‎Set‎objW‎o rdDo‎c = C‎r eate‎O bjec‎t("Wo‎r d.Do‎c umen‎t")‎objW‎o rdDo‎c.App‎l icat‎i on.D‎o cume‎n ts.A‎d d th‎e Temp‎l ate,‎Fals‎eob‎j Word‎D oc.A‎p plic‎a tion‎.Visi‎b le=T‎r ue‎Dim ‎t heAr‎r ay(2‎0,100‎00)‎f or i‎=0 to‎row-‎1fo‎r j=0‎to c‎o lumn‎-1t‎h eArr‎a y(j+‎1,i+1‎) = t‎a ble.‎r ows(‎i).ce‎l ls(j‎).inn‎e rTEX‎Tne‎x tn‎e xt‎o bjWo‎r dDoc‎.Appl‎i cati‎o n.Ac‎t iveD‎o cume‎n t.Pa‎r agra‎p hs.A‎d d.Ra‎n ge.I‎n sert‎B efor‎e("综合‎查询结果集‎") //‎显示表格标‎题o‎b jWor‎d Doc.‎A ppli‎c atio‎n.Act‎i veDo‎c umen‎t.Par‎a grap‎h s.Ad‎d.Ran‎g e.In‎s ertB‎e fore‎("") ‎Set ‎r ngPa‎r a = ‎o bjWo‎r dDoc‎.Appl‎i cati‎o n.Ac‎t iveD‎o cume‎n t.Pa‎r agra‎p hs(1‎).Ran‎g eW‎i th r‎n gPar‎a.B‎o ld =‎True‎//将标‎题设为粗体‎.Pa‎r agra‎p hFor‎m at.A‎l ignm‎e nt =‎1 //‎将标题居中‎.Fo‎n t.Na‎m e = ‎"隶书" ‎//设定标‎题字体‎.Font‎.Size‎= 18‎//设定‎标题字体大‎小En‎d Wit‎hSe‎t rng‎C urre‎n t = ‎o bjWo‎r dDoc‎.Appl‎i cati‎o n.Ac‎t iveD‎o cume‎n t.Pa‎r agra‎p hs(3‎).Ran‎g eS‎e t ta‎b Curr‎e nt =‎ObjW‎o rdDo‎c.App‎l icat‎i on.A‎c tive‎D ocum‎e nt.T‎a bles‎.Add(‎r ngCu‎r rent‎,row,‎c olum‎n)‎f or i‎= 1 ‎t o co‎l umn ‎obj‎W ordD‎o c.Ap‎p lica‎t ion.‎A ctiv‎e Docu‎m ent.‎T able‎s(1).‎R ows(‎1).Ce‎l ls(i‎).Ran‎g e.In‎s ertA‎f ter ‎theAr‎r ay(i‎,1)‎o bjWo‎r dDoc‎.Appl‎i cati‎o n.Ac‎t iveD‎o cume‎n t.Ta‎b les(‎1).Ro‎w s(1)‎.Cell‎s(i).‎R ange‎.Para‎g raph‎F orma‎t.ali‎g nmen‎t=1‎n ext ‎For ‎i =1 ‎t o co‎l umn ‎For ‎j = 2‎to r‎o wo‎b jWor‎d Doc.‎A ppli‎c atio‎n.Act‎i veDo‎c umen‎t.Tab‎l es(1‎).Row‎s(j).‎C ells‎(i).R‎a nge.‎I nser‎t Afte‎r the‎A rray‎(i,j)‎obj‎W ordD‎o c.Ap‎p lica‎t ion.‎A ctiv‎e Docu‎m ent.‎T able‎s(1).‎R ows(‎j).Ce‎l ls(i‎).Ran‎g e.Pa‎r agra‎p hF or‎m at.a‎l ignm‎e nt=1‎Nex‎tNe‎x t‎E nd S‎u b<‎/SCRI‎P T>‎三、直‎接在IE中‎打开,再存‎为EXCE‎L文件‎把读出‎的数据用<‎t able‎>格式,在‎网页中显示‎出来,同时‎,加上下一‎句即可把E‎X CEL表‎在客客户端‎显示。

asp.net实现Excel数据批量导入Web系统数据库word精品文档6页

asp.net实现Excel数据批量导入Web系统数据库word精品文档6页

asp实现Excel数据批量导入Web系统数据库【摘〓要】本文以学生信息管理系统中导入成绩表为例,介绍了利用asp将Excel数据批量导入到Web系统的sql数据库的实现过程。

目前,基于Web的信息管理系统,有的涉及到大量数据录入的问题,如学生信息管理系统,有学籍表、各班成绩表等信息,这些数据都已经存在Excel表中,如果能直接导入是最好的解决办法,就能避免了人工录入过程中的工作量大、效率低、容易出错等问题,其实Asp动态网页开发技术就能解决这一问题。

一般学籍表的格式和数据库的库结构的设计基本是一样的,Excel的表头和数据库的字段能够一一对应,但成绩表就不一样了,由于全校班级不同,所上的课程不同,在数据库设计时就不能和Excel 成绩表相同,下面我就以导入成绩表为例来说明如何实现将Excel数据批量导入到Web系统的Sql数据库中。

1、数据结构设计Excel成绩表结构如下:Sql数据库成绩表t_scores结构设计如下:由于学号是唯一的,所以不用设置姓名、班级、系部等字段,根据学号在学籍表中都能查到,避免了数据冗余。

通过上述表结构可以看出,需要把Excel表的不同的课程名作为Sql数据库成绩表中的一条记录中的一个内容导入,即一门课程占一条记录,以下来说明具体实现过程。

2、导入成绩界面设计导入数据必须把数据文件上传,上传所用控件为FileUpload,用来浏览上传文件,然后再用一个Button按钮控件,负责执行导入成绩这一过程,当点击“导入成绩”按钮时,系统自动执行Button1_Click事件程序。

再设计几个Label控件用来显示提示信息。

HTML代码如下:3、导入Excel数据程序分析3.1、添加引用为了能够上传、连接、读取Excel文件,要引入System.IO、System.Data、System.Data.OleDb命名空间,若要对SQL Server数据库操作,必须引入System.Data.Sql、System.Data.SqlClient命名空间。

ASP读取xls格式的Excel文件

ASP读取xls格式的Excel文件

ASP读取xls格式的Excel文件2011年6月28日ASP12 评论Excel也是一种数据库,跟Access类似,其读取方法也类似。

这里有一个简单的Excel表,文件名字为Excel.xls:咱就这个为例子来说明。

创建Excel连接代码:Dim XlsConn,xrsSet XlsConn=Server.CreateO bject("Adodb.Connection")XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0" 是不是跟连接Access文件很像呢?呵呵~连接创建好了,就可以创建记录集查询Excel里面的数据了。

Set xrs=XlsConn.Execute("Select * From [Sheet1$]")跟其他数据库的查询几乎是一样的,要注意的地方就是表名,Excel里面,默认会有三张表,Sheet1、Sheet2、Sheet3,从上面的例子也可以看到,需要注意查询时表名后面要加“$”符;查询结果:xrs(0)="数据列0"xrs(1)="1"xrs(2)="2"xrs(3)="3"xrs(4)="4"xrs(5)="5"这里有一点需要注意,如果一列中有多行,有的行的值是数字,有的行是字符,ASP去取值的时候数字行会读取出错,是为空的。

所以得想办法把数字行也变成字符型,比如加个’号去,读取出来之后再替换回去。

多行自然是用xrs.Movenext去循环取得了。

够简单吧!最后贴一段代码:Dim rsSet rs=Server.CreateObject("Adodb.Recordset")rs.Open "Select Top 1 * From Pro Where 1=2",Conn,3,2Dim XlsConn,xrsSet XlsConn=Server.CreateO bject("Adodb.Connection")XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"Set xrs=XlsConn.Execute("Select * From [Sheet1$]")Do While Not xrs.Eofrs.Addnewrs("iClear")= xrs(0)rs("Detail")= xrs(1)rs.Updatexrs.MovenextLoopxrs.Close()Set xrs=NothingXlsConn.Close()Set XlsConn=Nothingrs.Close()Set rs=NothingASP操作xls文件(2005-11-10 14:15:12)转载▼标签:杂谈分类:ASP只写一种方法。

用asp将excel表数据导入access数据库的代码

用asp将excel表数据导入access数据库的代码

Set rst = Server.CreateObject("ADODB.Recordset")
Sql2="select usrname,usrpwd,question,answer,sj from company"
rst.Open Sql2,sqlconn,1,3
if rst.Fields.Count-1=rs.Fields.Count-1 then '如果字段个数据相同则
Sql2="select id,usrname,usrpwd,question,answer,sj from company"
rst.Open Sql2,sqlcields.Count-1
%>
<td nowrap bgcolor="#999999"> <div align="center"><font color="#FFFFFF"><%=rst(i).Name%>[/red]</div></td>
sqlconn.Open"provider=microsoft.jet.oledb.4.0;data source="& Server.MapPath("../#bijiadata/company.mdb")
sqlconn.execute("delete * from company")
%>
导入的access数据库的数据如下:
<table border="1" align="center" cellpadding="4" cellspacing="4" bordercolordark="#FFFFFF">

ASP连接excel的方法

ASP连接excel的方法

asp连接Excel的方法一、asp连接Excel的方法与代码:<%dim connxls,connstrxlsconnstrxls="DBQ=d:\newexcel.xls;DefaultDir=;DRIVER={Microsoft Excel Driver (*.xls)};"Set connxls=Server.CreateObject("ADODB.Connection")connxls.Open connstrxlsSet rsxls=Server.CreateObject("ADODB.Recordset")SQLxls = "select * from [new$]"%>注意:写法和连接ACCESS基本相同,不同的是,在调用工作表的时候,不能直接用表名,工作表名后要加$,而且要用“[]”括起来。

二、asp操作Excel的总结:1、建立Excel对象setobjExcelApp=CreateObject("Excel.Application")objExcelApp.DisplayAlerts=false不显示警告objExcelApp.Application.Visible=false不显示界面2、新建Excel文件objExcelApp.WorkBooks.addsetobjExcelBook=objExcelApp.ActiveWorkBooksetobjExcelSheets=objExcelBook.WorksheetssetobjExcelSheet=objExcelBook.Sheets(1)3、读取已有Excel文件strAddr=Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr&"\Templet\Table.xls")Set objExcelBook=objExcelApp.ActiveWorkBookSet objExcelSheets=objExcelBook.WorksheetsSet objExcelSheet=objExcelBook.Sheets(1)4、另存Excel文件objExcelBook.SaveAsstrAddr&"\Temp\Table.xls"5、保存Excel文件objExcelBook.Save(笔者测试时保存成功,页面报错。

在ASP网页中访问Excel文件

在ASP网页中访问Excel文件

在ASP网页中访问Excel文件在ASP网页中访问Excel文件Excel文件可以作为活动文档(ActiveX Document)在活动文档容器(ActiveX Document Container)中打开,而IE就是一个活动文档容器,所以当页面中的链接指向一个Excel文件时,单击此链接即可启动Excel,最终将文件显示在IE窗口中。

这种方法虽然简单,但存在不少缺陷:客户机内必须安装Excel。

在企业内部网上还有可能做到,但Internet上就不现实了。

访问文档时将启动Excel,速度较慢。

若览器不是IE,则可能不是活动文档容器,因此将不能正确显示文件。

下面介绍一种在ASP文件中通过ADO访问Excel文件的方法。

----ADO是微软发布的基于OLEDB技术的数据库编程接口,通过ODBC驱动程序可以访问多种不同格式的数据文件,其中包括Excel文件。

要获得Excel的ODBC驱动程序,可以通过安装Office97,也可以去微软的站点下载。

正确安装后在控制面板中会出现ODBC数据源管理器,打开它确认在驱动程序页中有Excel的驱动程序。

然后编写Brow.ASP程序,如下例所示。

例中假设在同一目录下有Excel文件01.xls,且包含名为sheet1的工作表,工作表的第一行为列标题,以后为相应的数据。

Brow.asp:程序代码:<%Const adOpenStatic = 3Dim conn Dim rs ,dbPath Set conn = erver.CreateObject("ADODB.Connection") ‘ 生成实际路dbPath=server.MapPath("01.xls") ‘ 驱动程序名称必须与ODBC中的驱动程序名完全一致,包括空格conn.Open "driver={Microsoft Excel Driver (*.xls)};dbq=" & dbPath Set rs = Server.CreateObject("ADODB.Rec ordset") ‘ 在工作表后加上$,同时必须在工作表名外加括号rs.Open "[sheet1$]", conn, adOpenStatic% >< html >< head >< meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80" >< meta name="GENERATOR" content="Microsoft FrontPage Express 2.0" >< title > 浏览Excel数据表< /title >< /head >< body bgcolor="#FFFFFF" >< h2 align="center" >Brow.asp - 浏览Excel数据表< /h2 >< hr >< %Response.Write "< CENTER >< TABLE BORDER=1 >"Response.Write "< TR BGCOLOR=#00FFFF >"Response.WRITE "< TD >编号< /TD >" ‘ 显示每列的标题For i=0 to rs.Fields.Count-1Response.WRITE "< TD >" & rs.Fields(i).Name & "< /TD >"NextResponse.Write "< /TR >" RecNo=1‘ 显示工作表中的所有数据Do While Not rs.EOFResponse.Write "< TR > "Response.Write "< TD >" & RecNo & "< /TD >"‘显示各列的数据For i=0 to rs.Fields.Count-1Response.WRITE "< TD >" & rs.Fields(i).Value & "< /TD >"NextResponse.Write "< /TR >"rs.MoveNext RecNo=RecNo+1 LoopResponse.Write "< /TABLE >< /CENTER >"% >< hr > < /body > < /html >ODBC 将指定的工作表的第一行各列的内容识别成字段名,以下各行作为相应的数据,若打开的工作表中数据将没有按此规律出现,则需要指定范围。

asp在数据库中的应用

asp在数据库中的应用

1.1 Web基础知识
2. Web页与Web站点 Web页就是World Wide Web文档,一般称为网页。Web页 一般由HTML文件构成,其中包括有关旳文本、图像、声音、 动画、视频以及脚本语言程序等。按照Web服务器响应方式旳 不同,能够将Web页分为静态网页和动态网页。
静态网页与动态网页
1.1 Web基础知识
动态网页旳执行过程与静态网页有着本质旳区别,其执行过程如 下。
(1)当顾客在浏览器旳地址栏输入所要访问旳URL地址并按 Enter键或单击Web页上旳某个超级链接时,浏览器将这个动态 网页旳祈求发送到Web服务器。
(2)Web服务器接受到这些祈求并根据扩展名(如.asp)判断 出所祈求旳是动态网页文件,然后服务器从目前硬盘或内存中读 取相应旳文件。
板”→“管理工具”→“Internet服务管理器”命令,开启 “Internet信息服务”窗口,如下图所示。
1.3 ASP旳运营
3. IIS 5.1旳设置
开启、停止Web站点 在“Internet信息服务”窗口中,右击相应旳Web站点,在弹
出旳快捷菜单中选择相应旳功能,如图所示。
1.3 ASP旳运营
1.3 ASP旳运营
(2)在“Windows组件向导”对话框中选中“Internet信 息服务(IIS)”复选框,然后单击“详细信息”按钮,出 现如下图所示旳对话框。
1.3 ASP旳运营
(3)选择需要安装旳组件,然后按照向导提醒进行操作即可。 安装完毕后,经过选择“开始”→“设置”→“控制面
ASP访问数据库方式
1.1 Web基础知识
– 1. Web概述 – Web(World Wide Web)是一种基于超级链接
(Hyperlink)技术旳超文本(HyperText)和超媒体 (HyperMedia)系统。 – 在Web系统中,信息旳表达和传递一般使用HTML (HyperText Markup Language,超文本标识语言)格 式。 – 利用这种格式描述旳信息不但能够包括文本,还能够包 括图形、图像、音频、视频等,从而为顾客提供了一种 易于使用旳原则图形化界面。

ASP.NET之Excel下载模板、导入、导出操作

ASP.NET之Excel下载模板、导入、导出操作

之Excel下载模板、导⼊、导出操作本⽂介绍了下Excel下载模板、导⼊、导出操作,供⼤家参考,具体内容如下1.下载模板功能protected void btnDownload_Click(object sender, EventArgs e){var path = Server.MapPath(("upfiles\\") + "test.xlt"); //upfiles-⽂件夹 test.xlt-⽂件var name = "test.xlt";try{var file = new FileInfo(path);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name)); //头信息,指定默认⽂件名Response.AddHeader("Content-Length", file.Length.ToString());//显⽰下载进度Response.ContentType = "application/ms-excel"; // 指定返回的是⼀个不能被客户端读取的流,必须被下载Response.WriteFile(file.FullName); // 把⽂件流发送到客户端pleteRequest();}catch (Exception ex){Response.Write("<script>alert('错误:" + ex.Message + ",请尽快与管理员联系')</script>");}}2.导⼊数据Excel数据导⼊到数据库中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Asp连接读取excel内容并导入到数据库asp连接excel
Set connnew = Server.CreateObject("ADODB.Connection")
'hdr取值yes,no ,表示第一行是否为字段名
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="&Server.MapPath(“test.xls”)&";Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
connnew.open connstr
Set rsnew=Server.CreateObject("ADODB.Recordset")
'Sheet1为excel里面的表名,表名后面一定要加$
sqlnew = "select * from [Sheet1$]"
rsnew.open sqlnew,connnew,1,1
'rows是读取的excel里面数据的行数
rows=rsnew.recordcount
'cells是读取excel里面数据的列数
cells=rsnew.Fields.Count
输出记录集rsnew里面的数据,规则是这样的:
如果HDR赋值是No的话
rsnew(0)输出的是excel里第一行第一列的内容
如果HDR赋值是Yes的话
rsnew(0)输出的是excel里第二行第一列的内容
如果想输出第二行的内容,只需在语句前加rsnew.movenext
输出就这么简单的完成了!
连接网站数据库,相信各位程序猿都已经会了。

要做的就是用sql语句判断要导入的数据是否存在,存在用update修改一下。

不存在的话addnew重新插入一条即可。

如果想要实现上传excel后导入的话,可以加上一个上传程序,将上传后的excel 路径传输到asp连接excel的字符串里面。

asp读取excel并导入数据库就完成了,如果有不明白的可以联系作者!
注意事项

注意excel里的表名是不是Sheet1.不是话注意和程序保持一致
程序只适合固定模板excel使用。

如果excel格式不同,无法使用这个程序统一导入。

相关文档
最新文档