zoukankan      html  css  js  c++  java
  • asp excel sql 关系大总结

    如何用asp读取Excel文件?



    1. ASP对Excel的基本操作
    (1) 建立Excel对象
        创建Excel对象可以通过下面的代码来实现:
    <%
    set objExcelApp = CreateObject("Excel.Application")
    objExcelApp.DisplayAlerts = false               '不显示警告
    objExcelApp.Application   = false               '不显示界面
    %>
    (2) 新建Excel文件
        新建Excel文件可以通过以下代码来实现:
    <%
    objExcelApp.WorkBooks.add
    set objExcelBook   = objExcelApp.ActiveWorkBook
    set objExcelSheets = objExcelBook.Worksheets
    set objExcelSheet  = objExcelBook.Sheets(1)
    %>
    (3) 读取已有的Excel文件
        读取已有的Excel文件可以通过下面的代码来实现       
    <%
    strAddr = Server.MapPath(".")
    objExcelApp.WorkBooks.Open(strAddr & "TempletTable.xls")
    set objExcelBook   = objExcelApp.ActiveWorkBook
    set objExcelSheets = objExcelBook.Worksheets
    set objExcelSheet  = objExcelBook.WorkSheets(1)
    %>
    (4) 另存Excel文件
        另存Excel文件可以通过以下代码来实现
    <%
    objExcelBook.SaveAs strAddr & "templateTables.xls"
    %>
    (5) 保存Excel文件
        保存Excel文件可以通过以下代码来实现:
    <%
    objExcelBook.Save
    %>       
    (6) 退出Excel操作
    <%
    objExcelApp.Quit         '一定要退出
    set objExcelApp = nothing
    %>



    2 读取Excel文件的实例
    <%
    set xlApp = server.CreateObject("Excel.Application")
    %>

    2006-4-3 7:08:05  
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    2 读取Excel文件的实例

    <%
    set xlApp = server.CreateObject("Excel.Application")
    strsource = server.MapPath("xl.xls")
    set xlbook = xlApp.WorkBooks.Open(strsource)
    set xlsheet = xlbook.Worksheets(1)

    i = 1
    response.write "<table>"

    while xlsheet.cells(i,1) <> ""

       response.write "<tr>"
       response.write "<td>" & xlsheet.Cells(i,1) & "</td>"
       response.write "<td>" & xlsheet.Cells(i,2) & "</td>"
       response.write "<td>" & xlsheet.Cells(i,3) & "</td>"
       response.write "<tr>"
       i = i + 1
       
    wend

    response.write "</table>"
    set xlsheet = nothing
    set xlbook  = nothing
    xlApp.quit
    '千万记住要加这一句,否则每运行一次你的机器里就增加一个Excel进程,而且无法释放
    'set xlApp = nothing 是不行的
    %>
    2006-4-3 7:58:27 #
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    怎样将数据从Excel导入到SQL Server中

    (1)
    <%
    sub dataIntoSqlServer_ceritificate(strFileName,strSheetName,myConn)
       '定义
       dim myConnection
       dim strName
       dim rsXsl,rsSql
       dim myConn_Xsl
       dim cmd
       dim i,j
       dim maxId
       
       strName = strFileName
       set myConnection = Server.CreateObject("ADODB.Connection")
       set rsXsl = Server.CreateObject("ADODB.Recordset")
       set rsSql = Server.CreateObject("ADODB.Recordset")
       set cmd   = server.CreateObject("ADODB.Command")
       
       cmd.ActiveConnection = myConn
       
       myConn_Xsl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName & _
                   ";Extended Properties=Excel 8.0"
       '打开连接
        myconnection.open myConn_Xsl
       '打开表      
       str_Xsl = "select * from [" & strSheetName & "$]"
       rsXsl.open str_Xsl,myconnection,1,1
       j = 1
       Do while not rsXsl.eof
       '取出最大值
       str_sql = "select Max(id) as maxId from exceltosql"
       rsSql.open str_Sql,myConn,1,3
       if Not rsSql.eof then
          if not isNull(rsSql("maxId")) then
             maxId=CLng(rsSql("maxId")) + 1
          else
             maxId = 1
          end if
       else
          maxId = 1
       end if
       rsSql.close   '//关闭对象
       '加入数据库
       str_Sql = "insert into exceltosql values(" & maxId&",'"&rsXsl(1)&"','" & rsXsl(2)&"')"
          cmd.CommandText = str_Sql
          cmd.Excute()
          ''''''''''''''''''''''''''''''''''''''''''
          j = j + 1
          rsXsl.moveNext
       loop
       
       response.write "共导入 " & j_1 & " 条记录.<br>"
       response.write "<a href=# onclick='self.close();'>关闭窗口</a>"
       set rsXsl = nothing
       set rsSql = nothing
       set myconnection = nothing
       set cmd = nothing
    end sub


    (2)
    '调用方法
    <%
    file1 = "c:\excelexample.xls"
    myconn = "DRIVER={SQL SERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=aspbook"
    dataIntoSqlServer_ceritificate file1,"sheet1",myconn
    %>
    2006-4-4 7:19:21 #
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    ASP操作Excel技术总结  

    目录  
    一、            环境配置  
    二、            ASP对Excel的基本操作  
    三、            ASP操作Excel生成数据表  
    四、            ASP操作Excel生成Chart图  
    五、            服务器端Excel文件浏览、下载、删除方案  
    六、            附录  

    正文  
    一、            环境配置  
    服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:  
    1.Win9x+PWS+Office  
    2.Win2000  Professional+PWS+Office  
    3.Win2000  Server+IIS+Office  
    目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。  
    服务器端环境配置还有两个偶然的发现是:  
    1.            笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。  
    2.            笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。  
    服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft  Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。  
    客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。  

    二、            ASP对Excel的基本操作  
    1、            建立Excel对象  
    set  objExcelApp  =  CreateObject("Excel.Application")  
    objExcelApp.DisplayAlerts  =  false                        不显示警告  
    objExcelApp.Application.Visible  =  false                        不显示界面  
    2、            新建Excel文件  
    objExcelApp.WorkBooks.add  
    set  objExcelBook  =  objExcelApp.ActiveWorkBook  
    set  objExcelSheets  =  objExcelBook.Worksheets  
    set  objExcelSheet  =  objExcelBook.Sheets(1)  
    3、            读取已有Excel文件  
    strAddr  =  Server.MapPath(".")  
    objExcelApp.WorkBooks.Open(strAddr  &  "\Templet\Table.xls")  
    set  objExcelBook  =  objExcelApp.ActiveWorkBook  
    set  objExcelSheets  =  objExcelBook.Worksheets  
    set  objExcelSheet  =  objExcelBook.Sheets(1)  
    4、            另存Excel文件  
    objExcelBook.SaveAs  strAddr  &  "\Temp\Table.xls"  
    5、            保存Excel文件  
    objExcelBook.Save                        (笔者测试时保存成功,页面报错。)  
    6、            退出Excel操作  
    objExcelApp.Quit            一定要退出  
    set  objExcelApp  =  Nothing  

    三、            ASP操作Excel生成数据表  
    1、            在一个范围内插入数据  
    objExcelSheet.Range("B3:k3").Value  =  Array("67",  "87",  "5",  "9",  "7",  "45",  "45",  "54",  "54",  "10")  
    2、            在一个单元格内插入数据  
    objExcelSheet.Cells(3,1).Value="Internet  Explorer"  
    3、            选中一个范围  
    4、            单元格左边画粗线条  
    5、            单元格右边画粗线条  
    6、            单元格上边画粗线条  
    7、            单元格下边画粗线条  
    8、            单元格设定背景色  
    9、            合并单元格  
    10、            插入行  
    11、            插入列  

    四、            ASP操作Excel生成Chart图  
    1、            创建Chart图  
    objExcelApp.Charts.Add  
    2、            设定Chart图种类  
    objExcelApp.ActiveChart.ChartType  =  97  
    注:二维折线图,4;二维饼图,5;二维柱形图,51  
    3、            设定Chart图标题  
    objExcelApp.ActiveChart.HasTitle  =  True  
    objExcelApp.ActiveChart.ChartTitle.Text  =  "A  test  Chart"  
    4、            通过表格数据设定图形  
    objExcelApp.ActiveChart.SetSourceData  objExcelSheet.Range("A1:k5"),1  
    5、            直接设定图形数据(推荐)  
    objExcelApp.ActiveChart.SeriesCollection.NewSeries  
    objExcelApp.ActiveChart.SeriesCollection(1).Name  =  "=""333"""  
    objExcelApp.ActiveChart.SeriesCollection(1).Values  =  "={1,4,5,6,2}"  
    6、            绑定Chart图  
    objExcelApp.ActiveChart.Location  1  
    7、            显示数据表  
    objExcelApp.ActiveChart.HasDataTable  =  True  
    8、            显示图例  
    objExcelApp.ActiveChart.DataTable.ShowLegendKey  =  True  

    五、            服务器端Excel文件浏览、下载、删除方案  
    浏览的解决方法很多,“Location.href=”,“Navigate”,“Response.Redirect”都可以实现,建议用客户端的方法,原因是给服务器更多的时间生成Excel文件。  
    下载的实现要麻烦一些。用网上现成的服务器端下载组件或自己定制开发一个组件是比较好的方案。另外一种方法是在客户端操作Excel组件,由客户端操作服务器端Excel文件另存至客户端。这种方法要求客户端开放不安全ActiveX控件的操作权限,考虑到通知每个客户将服务器设置为可信站点的麻烦程度建议还是用第一个方法比较省事。  
    删除方案由三部分组成:  
    A:            同一用户生成的Excel文件用同一个文件名,文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成时自动覆盖上一文件。  
    B:            在Global.asa文件中设置Session_onEnd事件激发时,删除这个用户的Excel暂存文件。  
    C:            在Global.asa文件中设置Application_onStart事件激发时,删除暂存目录下的所有文件。  
    注:建议目录结构  \Src  代码目录  \Templet  模板目录  \Temp  暂存目录  

    六、            附录  
    出错时Excel出现的死进程出现是一件很头疼的事情。在每个文件前加上“On  Error  Resume  Next”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。  



    2006-4-6 6:51:42 #
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    ASP读EXCEL2000的文章!!



    由于工作需要 要用ASP读取EXCEL的工资单 所以在网上找了些资料
    写了以下程序 送给大家:)
    <%
    '=====================ASP读取EXCEL注事项===========================
    'i)将Excel97或Excel2000生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表
    'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容
    'iii)Excel中的行标题(即字段名)不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1”
    'iiii)如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型,你必须要保证该列的数据类型一致
    'E-MAIL:Kaxue@Hotmail.com QQ:484110 HOMEPAGE:www.Flyday.net
    '整理时间:Thursday, May 23, 2002 5:54 PM WIN2000SERVER+IIS5 测式通过
    '===================================================================

    Dim Conn,Driver,DBPath,Rs
    ' 建立Connection对象
    Set Conn = Server.CreateObject("ADODB.Connection")
    Driver = "Driver={Microsoft Excel Driver (*.xls)};"
    DBPath = "DBQ=" & Server.MapPath( "test.xls" )
    '调用Open 方法打开数据库
    Conn.Open Driver & DBPath

    'DSN连接方式
    'Conn.Open "Dsn=test"
    '注意 表名一定要以下边这种格试 "[表名$]" 书写
    Sql="Select * From [Sheet1$] where 序号=0"
    Set Rs=Conn.Execute(Sql)

    IF Rs.Eof And Rs.Bof Then
    Response.write "没有找到您需要的数据!!"
    Else

    Do While Not Rs.EOF

    Response.write Rs("姓名")

    Rs.MoveNext
    Loop
    End IF

    Rs.Close
    Set Rs=nothing
    Conn.Close
    Set Conn=Nothing
    'Response.Write "成功!"
    %>



    2006-4-6 6:56:09 #
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    ASP与电子表格EXCEL的交互操作



    Here we go again with another sample for Excel, this time we will be using ASP to create a chart. You all
    asked me for it, now here is the solution. Thanks again for all your nice comments :)

    First we set the type of script

    <%@ LANGUAGE="VBSCRIPT" %>

    Make the object, and set the object to an Excelsheet

    Dim MyExcelChart
    Set MyExcelChart = CreateObject("Excel.Sheet")

    Now lets write the rest of the script, see the comments

    ' show or dont show excel to user, TRUE or FALSE
    MyExcelChart.Application.Visible = True

    ' populate the cells
    MyExcelChart.ActiveSheet.Range("B2:k2").Value = Array
    ("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7", "Week8", "Week9", "Week10")
    MyExcelChart.ActiveSheet.Range("B3:k3").Value = Array
    ("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
    MyExcelChart.ActiveSheet.Range("B4:k4").Value = Array
    ("10", "10", "8", "27", "33", "37", "50", "54", "10", "10")
    MyExcelChart.ActiveSheet.Range("B5:k5").Value = Array
    ("23", "3", "86", "64", "60", "18", "5", "1", "36", "80")
    MyExcelChart.ActiveSheet.Cells(3,1).Value="Internet Explorer"
    MyExcelChart.ActiveSheet.Cells(4,1).Value="Netscape"
    MyExcelChart.ActiveSheet.Cells(5,1).Value="Other"

    ' Select the contents that need to be in the chart
    MyExcelChart.ActiveSheet.Range("b2:k5").Select
        
    ' Add the chart
    MyExcelChart.Charts.Add
    ' Format the chart, set type of chart, shape of the bars, show title, get the data for the chart, show
    datatable, show legend
    MyExcelChart.activechart.ChartType = 97
    MyExcelChart.activechart.BarShape =3
    MyExcelChart.activechart.HasTitle = True
    MyExcelChart.activechart.ChartTitle.Text = "Visitors log for each week shown in browsers percentage"
    MyExcelChart.activechart.SetSourceData MyExcelChart.Sheets("Sheet1").Range("A1:k5"),1
    MyExcelChart.activechart.Location 1
    MyExcelChart.activechart.HasDataTable = True
    MyExcelChart.activechart.DataTable.ShowLegendKey = True

    ' Save the the excelsheet to excelface
    MyExcelChart.SaveAs "c:\chart.xls"
    %>

    Now lets complete the HTML tags.

    <HTML>
    <HEAD>
    <TITLE>MyExcelChart</TITLE>
    </HEAD>
    <BODY>
    </BODY>
    </HTML>

    This completes yer ASP page, look below for the complete code of myexcelchart.asp

    <%@ LANGUAGE="VBSCRIPT" %>
    <%
    ' Create Object
    Set MyExcelChart = CreateObject("Excel.Sheet")

    ' show or dont show excel to user, TRUE or FALSE
    MyExcelChart.Application.Visible = True

    ' populate the cells
    MyExcelChart.ActiveSheet.Range("B2:k2").Value = Array
    ("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7", "Week8", "Week9", "Week10")
    MyExcelChart.ActiveSheet.Range("B3:k3").Value = Array
    ("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
    MyExcelChart.ActiveSheet.Range("B4:k4").Value = Array
    ("10", "10", "8", "27", "33", "37", "50", "54", "10", "10")
    MyExcelChart.ActiveSheet.Range("B5:k5").Value = Array
    ("23", "3", "86", "64", "60", "18", "5", "1", "36", "80")
    MyExcelChart.ActiveSheet.Cells(3,1).Value="Internet Explorer"
    MyExcelChart.ActiveSheet.Cells(4,1).Value="Netscape"
    MyExcelChart.ActiveSheet.Cells(5,1).Value="Other"

    ' Select the contents that need to be in the chart
    MyExcelChart.ActiveSheet.Range("b2:k5").Select
        
    ' Add the chart
    MyExcelChart.Charts.Add
    ' Format the chart, set type of chart, shape of the bars, show title, get the data for the chart, show
    datatable, show legend
    MyExcelChart.activechart.ChartType = 97
    MyExcelChart.activechart.BarShape =3
    MyExcelChart.activechart.HasTitle = True
    MyExcelChart.activechart.ChartTitle.Text = "Visitors log for each week shown in browsers percentage"
    MyExcelChart.activechart.SetSourceData MyExcelChart.Sheets("Sheet1").Range("A1:k5"),1
    MyExcelChart.activechart.Location 1
    MyExcelChart.activechart.HasDataTable = True
    MyExcelChart.activechart.DataTable.ShowLegendKey = True


    ' Save the the excelsheet to chart.xls
    MyExcelChart.SaveAs "c:\chart.xls"


    %>
    <HTML>
    <HEAD>
    <TITLE>MyExcelChart</TITLE>
    </HEAD>
    <BODY>
    </BODY>
    </HTML>
    2006-4-6 6:56:58 #
    • shuiziliuvvv
    • 性别 True
    • 加入日期 2005-10-26
    • QQ号码 191081370
    • 邮箱 shuiziliuvvv@163.com
    • 发帖
    • 回复

    asp实现在web中显示电子表格数据(一)

    显示数据表格的应用
       在用ASP语言开发的Web数据库应用程序中,ADO (ActiveX Data Objects) 已经成为非常流行的工具,而且对于真正的关系型数据库,比如Oracle、SQL Server,它都不会有局限性。ADO能够存取多种不同的数据格式,MS Excel电子数据表格就是其中之一。

       关于这个应用

       可供下载的例程代码中包括一个ASP文件ReadX1.asp,一个Excel文件TheWorkbook.xls。你也可以另外加入一些电子数据表文件。

       执行ReadXl.asp页面,将显示出可用的电子数据表文件列表。选择好一个文件,并提交表单后,你将会看到:

    一个下拉菜单,其中是工作表名称
    一个下拉菜单,其中是命名的范围
    一个单元格范围输入框
    第一个工作表的全部内容
      

       可以选择工作簿文件中的另外一个工作表,或者输入符合Excel格式的单元格范围数值,比如:D20:E21 或者 Sheet3!F12:J22。注意:在ADO和ODBC驱动程序中,要用$符合替换分界符号!。

       实现步骤

       现在对这个应用程序已经有了初步的认识,下面开始讨论ASP代码,看看如何读取电子数据表的数据,如何找到电子数据簿
    (workbook)文件中可用的电子数据表(worksheet)和范围,并看看实现文件列表选择的技术。这里假设你已经熟悉了编写HTML表单的技术,所以对此不做详细介绍。

       基本条件

       下面将涉及到ADO对象、方法、属性、收集和常量。在服务器上安装IIS后,ADO就存在了,并且还有相关文档,地址是http://YourServer/IisHelp/ado210.chm (版本2.1),或者http://YourServer/IisHelp/ado/docs/(老版本1.5)。如果需要升级ADO,可以从http://www.microsoft.com/Data/download.htm下载最新版本的MDAC工具包进行安装。

       实现“文件列表选择”使用到了内建的VBScript脚本对象,相关文档可以查看http://YourServer/IisHelp/vbscript/htm/vbstoc.htm,如果想查看最新的文档,请访问http://msdn.microsoft.com/scripting
    (版本5)。当然,在服务器端和客户端,你都不需要安装MS Excel。

       读取电子数据表(Worksheet)数据

       通过ADO读取电子数据表与读取数据库表的方法基本是一样的。从下图可以看到,电子数据表的行被称作记录Records,列被称作字段Fields。电子数据表或者单元格的范围可以被看成表Tables,并按照记录集recordsets进行存取。

    Spreadsheet Database HTML
      < table >
    < tr >
    < th >NameA< /th >
    < th >NameB< /th >
    < th >NameC< /th >
    < /tr >< tr >
    < td >1< /td >
    < td >2< /td >
    < td >3< /td >
    < /tr >< tr >
    < td >11< /td >
    < td >12< /td >
    < td >13< /td >
    < /tr >
    < /table >

       执行下面的步骤,从数据库表中读取数据并显示:

    连接数据库(同样:打开数据簿文件)
    读取记录集recordset(同样:读取一定范围的单元格)
    循环每一个记录(同样:每一行),经过格式化,显示
       建立ADO连接

       在连接数据库或者打开文件前,需要了解一些信息。其中只要是设置名叫DSN的ODBC驱动,但为每一个数据表都建立这样的ODBC驱动,是非常麻烦的,因为这需要在服务器的控制台上通过“控制面板/ODBC设置”手工完成。

       幸好,ASP提供了替代DSN的其他方法,它可以非常容易地在运行时建立连接。比如,字符串“DRIVER={Microsoft Excel Driver?*.xls)};ReadOnly=1;DBQ=C:dirfile.xls",表示了替代DSN打开文件c:dirfile.xls,因此通过这种方法仅仅需要提供给ASP程序一个文件名即可。执行下面的代码,将从表单中读取文件名,然后转换为全路径,接着生成连接字符串,最后建立并打开这个连接。

    vXlFile = Request("XlBook")
    vXlFilePath = Server.MapPath(vXlFile) ' assumes file in current directory
    vConnString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
                  vXlFilePath
    Set oConn = Server.CreateObject("ADODB.Connection")
    oConn.Open vConnString
       如果想查看更多的非DSN连接信息,请打开Windows或者NT System目录下的帮助文件Odbcjet.hlp。

       读取记录集

       连接上电子数据簿文件后,读取一定范围的单元格数据就很简单了。尽管不是必须的,但还是建议:用符合“[” 和 “]”包含住单元格的范围定义。只所以这么做,是以防在数据库的操作中产生非法的符合。

    vXlRange = Request("XlRange")
    Set oRs = oConn.Execute("[" & vXlRange & "]")

       执行上面的语句,将返回记录集对象,其中包括范围内单元格的所有可用信息, 记录集的数值和描述数据的元数据。

    给你个将数据从EXCEL导入SQL Server的例子,EXCEL导入ACCESS类似

    sub dataIntoSqlServer_ceritificate(strFileName,strSheetName,myConn)
    '定义
    dim myConnection
    dim strName
    dim rsXsl,rsSql
    dim str_Xsl,str_Sql
    dim myConn_Xsl
    dim cmd
    dim i,j
    dim maxId

    strName=strFileName
    set myConnection=server.createobject("adodb.connection")
    set rsXsl=Server.Createobject("ADODB.Recordset")
    set rsSql=Server.CreateObject("ADODB.Recordset")
    set cmd=Server.CreateObject("ADODB.Command")
    cmd.ActiveConnection=myConn

    'myConn_Xsl="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName& ";Extended Properties=Excel 8.0"

    myConn_Xsl="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application("ASP_Directory") & "chapter05\database\" & strName & ";Extended Properties=Excel 8.0"
    '打开连接
    myconnection.open myConn_Xsl

    '打开表
    str_Xsl="select * from ["& strSheetName &"$]"
    rsXsl.open str_Xsl,myconnection,1,1
    j=1
    Do While not rsXsl.eof
    '取出最大值
    str_Sql="select Max(id) as maxId from exceltosql"
    rsSql.open str_Sql,myConn,1,3
    If Not rsSql.Eof Then
    If not isNull(rsSql("maxId")) Then
    maxId=Clng(rsSql("maxId"))+1
    Else
    maxId=1
    End if
    else
    maxId=1
    End if
    rsSql.close'//关闭对象
    '加入数据库
    str_Sql=" insert into exceltosql values("&maxId&",'"&rsXsl(1)&"','"&rsXsl(2)&"')"
    cmd.CommandText=str_Sql
    cmd.Execute()
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    j=j+1
    rsXsl.movenext
    Loop

    response.write "共导入<font color='red'>" & j-1 & "</font>条记录.<br/>"
    response.write "<a href=# onclick='self.close();'>关闭窗口</a>"
    set rsXsl=nothing
    set rsSql=nothing
    set myconnection=nothing
    set cmd=nothing
    end sub


    下面是调用导入方法的代码

    file1="C:\excelexample.xls"
    myconn=Application("ASP_Chapter05_Con1")'"DRIVER={SQL SERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=aspbook"
    dataIntoSqlServer_ceritificate file1,"sheet1",myconn

    =========================================
    <%  
    'On   Error   Resume   Next  
    '导入Excel电子表格数据到SQL   Sever数据库   By   Dicky   2004-12-27   16:41:12   QQ:25941  
    Function   Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)  
    '创建数据库连接对象并打开数据库连接  
    Dim   ConnStr  
     

     SqlUsername = "sa"
    SqlPassword = "sa"
    SqlDatabaseName = "sztcsc"
    SqlLocalName = "(local)"
    ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"


    Set   SqlConn   =   Server.CreateObject("ADODB.Connection")  
    SqlConn.Open   ConnStr  
    If   Err   Then  
    Err.Clear  
    Set   SqlConn   =   Nothing  
    Response.Write   "数据连接错误!"  
    Response.End  
    End   If  
    End   Function  

    Function   Close_Conn(SqlConn)  
    '关闭数据库连接并清除数据库连接对象  
    If   IsObject(SqlConn)   Then  
    SqlConn.Close  
    Set   SqlConn   =   Nothing  
    End   If  
    End   Function  

    Call   Open_Conn("sztcsc","sa","sa","(local)",SqlConn)   '打开SQL   Server数据库连接  

    Function   Get_EMP_CnName(NTACCNT)  
    '根据用户NT帐号得到用户中文名  
    Dim   Sql,Rs  
    Sql   =   "Select   EMP_CNAME   From   RF_EMPLOYEE   Where   EMP_NTACCNT='"&NTACCNT&"'"  
    Set   Rs   =   Server.CreateObject("Adodb.RecordSet")  
    Rs.Open   Sql,SqlConn,1,1  
    If   Rs.Eof   Then  
    Get_EMP_CnName   =   ""  
    Else  
    Get_EMP_CnName   =   Rs("EMP_CNAME")  
    End   If  
    Rs.Close  
    Set   Rs   =   Nothing  
    End   Function

    %>

    <html>  
    <head>  
    <title>导入Excel电子表格数据到SQL   Sever数据库</title>  
    <body   bgcolor="#ACD9AF">  
    <center><b>导入Excel电子表格数据到SQL   Sever数据库</b></center>  
    <FORM   METHOD="POST"   name="form1">  
    請選擇數據源:   <input   type="file"   name="File"   size="40"   title="请选择需要導出的Excel文件">   <input   type=submit   name=submit   value="開始導出">  
    <br>請選擇目標表:  
    <SELECT   NAME="Table"   title="请选择需要导入数据的表">  
    <option></option>  
    <%   Dim   RsSqlDatabaseTable  
    Set   RsSqlDatabaseTable   =   SqlConn.OpenSchema(20)  
    Do   While   Not   RsSqlDatabaseTable.Eof   %>  
    <option<%If   Trim(Request("Table"))=RsSqlDatabaseTable(2)   Then   Response.Write   "   selected"%>><%=RsSqlDatabaseTable(2)%></option>  
    <%   RsSqlDatabaseTable.MoveNext:Loop  
    Set   RsSqlDatabaseTable   =   Nothing   %>  
    </SELECT>  
    </FORM>  
    <font   color=blue>導出過程中請不要刷新頁面!</font><br>  
    <%  
    If   Right(Trim(Request("File")),3)   =   "xls"   Then  
    Response.Write   "<font   color=red>您所導出的Excel文件是:"&Trim(Request("File"))&"</font><br>"  
    End   If  
    '=====================ASP读取EXCEL注事项=====================================  
    'i)将Excel97或Excel2000生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表  
    'ii)ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容  
    'iii)Excel中的行标题(即字段名)不能够包含数字.   Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1”  
    'iiii)如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常,   处理这一行的数据类型,你必须要保证该列的数据类型一致  
    'E-MAIL:Kaxue@Hotmail.com   QQ:484110   HOMEPAGE:www.Flyday.net  
    '整理时间:Thursday,   May   23,   2002   5:54   PM   WIN2000SERVER+IIS5   测式通过  
    '============================================================================  
    If   Trim(Request("File"))   =   ""   Then  
    Response.Write   "<font   color=red>對不起,請選擇需要導出的Excel文件!</font>"  
    Response.End  
    ElseIf   Right(Trim(Request("File")),3)   <>   "xls"   Then  
    Response.Write   "<font   color=red>對不起,請確定您要導出的是Excel文件!</font>"  
    Response.End  
    Else  
    '列出所選擇的Excel文件中的所有工作表  
    Dim   ExeclFile,objExcelApp,objExcelBook  
    ExeclFile   =   Trim(Request("File"))  
    Set   objExcelApp   =   CreateObject("Excel.Application")  
    objExcelApp.Quit  
    objExcelApp.DisplayAlerts   =   False   '不显示警告  
    objExcelApp.Application.Visible   =   False   '不显示界面  
    objExcelApp.WorkBooks.Open(ExeclFile)  
    set   objExcelBook   =   objExcelApp.ActiveWorkBook  
    reDim   arrSheets(objExcelBook.Sheets.Count)  
    For   i=1   to   objExcelBook.Sheets.Count  
    arrSheets(i)   =   objExcelBook.Sheets(i).Name  
    '   Response.Write   arrSheets(i)  
    Next  
    objExcelApp.Quit  
    Set   objExeclApp   =   Nothing  
    '列出所選擇的Excel文件中的所有工作表  
    End   If  

    Dim   Conn,Driver,DBPath,Rs,SqlInsert,SqlDelete  
    '建立Connection对象  
    Set   Conn   =   Server.CreateObject("ADODB.Connection")  
    Driver   =   "Driver={Microsoft   Excel   Driver   (*.xls)};"  
    'DBPath   =   "DBQ="   &   Server.MapPath(   "HRB.xls"   )  
    DBPath   =   "DBQ="   &   Trim(Request("File"))  
    '调用Open   方法打开数据库  
    Conn.Open   Driver   &   DBPath  

    'DSN连接方式  
    'Conn.Open   "Dsn=test"  
    '注意   表名一定要以下边这种格式   "[表名$]"   书写  
    For   i   =   1   To   UBound(arrSheets)'開始循環所有工作表  
    Sql   =   "SELECT   *   FROM   ["&   arrSheets(i)   &"$]   "  
    Set   Rs   =   Conn.Execute(Sql)  

    If   Rs.Eof   And   Rs.Bof   Then  
    Response.write   "没有找到您需要的数据!!<br>"  
    Else  
    '   Response.Write   "<font   color=blue>工作表:</font><font   color=green>"&arrSheets(i)&"</font><br>"  
    Do   While   Not   Rs.Eof  
    SqlInsert   =   "Insert   Into   "&Trim(Request("Table"))&"   (EDG_Project_Name,EDG_Project_No,EDG_Project_VM,EDG_Project_VM_CnName,EDG_Project_M,EDG_Project_M_CnName,EDG_Project_Director,EDG_Project_Director_CnName)   Values   ('"&Trim(Rs(0))&"','"&Trim(Rs(1))&"','"&Trim(Rs(2))&"','"&Trim(Rs(2))&"("&Get_EMP_CnName(Trim(Rs(2)))&")"&"','"&Trim(Rs(3))&"','"&Trim(Rs(3))&"("&Get_EMP_CnName(Trim(Rs(3)))&")"&"','"&Trim(Rs(4))&"','"&Trim(Rs(4))&"("&Get_EMP_CnName(Trim(Rs(4)))&")"&"')"  
    '此处插入的值根据实际数据库结构进行调整  
    SqlConn.Execute(SqlInsert)'插入Excel表格裏所有東東  
    Rs.MoveNext  
    Loop  
    Response.Write   "<font   color=red>恭喜,成功導出Excel文件中工作表[</font><font   color=blue>"&arrSheets(i)&"</font><font   color=red>]的數據到SQL   Server數據表[<font   color=blue>"&Trim(Request("Table"))&"</font>]中!^_^</font><br>"  
    End   If  

    Rs.Close  
    Set   Rs   =   Nothing  
    Next'循環所有工作表結束  

    Call   Close_Conn(Conn)   '关闭Excel数据库连接  
    Call   Close_Conn(SqlConn)   '关闭SQL   Server数据库连接   %>  
    </body>  
    </html>  

    ======================================================
    <%
     On Error Resume Next
    ''导入Excel电子表格数据到SQL Sever数据库 By Dicky 2004-12-27 16:41:12
    Function Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)
    ''创建数据库连接对象并打开数据库连接
    Dim ConnStr
    ''SQL Server数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP)
    ConnStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"
    Set SqlConn = Server.CreateObject("ADODB.Connection")
    SqlConn.Open ConnStr
    If Err Then
    Err.Clear
    Set SqlConn = Nothing
    Response.Write "数据连接错误!"
    Response.End
    End If
    End Function

    Function Close_Conn(SqlConn)
    ''关闭数据库连接并清除数据库连接对象
    If IsObject(SqlConn) Then
    SqlConn.Close
    Set SqlConn = Nothing
    End If
    End Function

    Call Open_Conn("xformdemo","sa","sa","(local)",SqlConn) ''打开本地SQL Server数据库连接
    'Call Open_Conn("xformdemo","","sa","ssh03",SqlConn1) ''打开远程SQL Server数据库连接

    Function Get_EMP_CnName(NTACCNT)
    ''根据用户NT帐号得到用户中文名
    Dim Sql1,Rs1

    Sql1 = "Select * From C_DEPT Where EMP_NTACCNT=''"&NTACCNT&"''"
    Set Rs1 = Server.CreateObject("Adodb.RecordSet")
    Rs1.Open Sql1,SqlConn1,1,1
    If Rs1.Eof Then
    Get_EMP_CnName = ""
    Else
    Get_EMP_CnName = Rs1("EMP_CNAME")
    End If
    Rs1.Close
    Set Rs1 = Nothing
    End Function %>
    <html>
    <head>
    <title>导入Excel电子表格数据到SQL Sever数据库</title>
    <body bgcolor="#ACD9AF">
    <center><b>导入Excel电子表格数据到SQL Sever数据库</b></center>
    <FORM METHOD="POST" name="form1">
    請選擇數據源(本地库):
    <SELECT NAME="Table" title="请选择需要导入数据的表">
    <option></option>
    <% Dim RsSqlDatabaseTable
    Set RsSqlDatabaseTable = SqlConn.OpenSchema(20)
    Do While Not RsSqlDatabaseTable.Eof %>
    <option<%If Trim(Request("Table"))=RsSqlDatabaseTable(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable(2)%></option>
    <% RsSqlDatabaseTable.MoveNext:Loop
    Set RsSqlDatabaseTable = Nothing %>
    </SELECT><input type=submit name=submit value="開始導出">
    <br>請選擇目標表(远程库):
    <SELECT NAME="Table1" title="请选择需要导入数据的表">
    <option></option>
    <% Dim RsSqlDatabaseTable1
    Set RsSqlDatabaseTable1 = SqlConn1.OpenSchema(20)
    Do While Not RsSqlDatabaseTable1.Eof %>
    <option<%If Trim(Request("Table1"))=RsSqlDatabaseTable1(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable1(2)%></option>
    <% RsSqlDatabaseTable1.MoveNext:Loop
    Set RsSqlDatabaseTable1 = Nothing %>
    </SELECT>
    </FORM>
    <font color=blue>導出過程中請不要刷新頁面!</font><br>
    <%
    If Trim(Request("Table1")) <> "" Then
    Dim Sql,Rs
    Sql = "Select * From Sheet1$" ''Sheet1$是我们实现用SQL Server自身数据转换功能得到的表名
    Set Rs = SqlConn.Execute(Sql)
    If Rs.Eof And Rs.Bof Then
    Response.write "没有找到您需要的数据!!<br>"
    Else
    Do While Not Rs.Eof
     SqlInsert = "Insert Into "&Trim(Request("Table1"))&" (EDG_Project_Name,EDG_Project_No,EDG_Project_VM,EDG_Project_VM_CnName,EDG_Project_M,EDG_Project_M_CnName,EDG_Project_Director,EDG_Project_Director_CnName) Values (''"&Trim(Rs("工程名称"))&"'',''"&Trim(Rs("工程编号"))&"'',''"&Trim(Rs("项目副理"))&"'',''"&Trim(Rs("项目副理"))&"("&Get_EMP_CnName(Trim(Rs("项目副理")))&")"&"'',''"&Trim(Rs("项目经理"))&"'',''"&Trim(Rs("项目经理"))&"("&Get_EMP_CnName(Trim(Rs("项目经理")))&")"&"'',''"&Trim(Rs("项目总监"))&"'',''"&Trim(Rs("项目总监"))&"("&Get_EMP_CnName(Trim(Rs("项目总监")))&")"&"'')"
    '' Response.Write SqlInsert
    ''此处插入的值根据实际数据库结构进行调整
    SqlConn1.Execute(SqlInsert)''插入Excel表格裏所有東東
    Rs.MoveNext
    Loop
    Response.Write "<font color=red>恭喜,成功導出数据!^_^</font><br>"
    End If

    Rs.Close
    Set Rs = Nothing
    End If

    Call Close_Conn(SqlConn) ''关闭Excel数据库连接
    Call Close_Conn(SqlConn1) ''关闭SQL Server数据库连接 %>
    </body>
    </html>
    ============================================================

    导出excel文件


    <%
     Response.Clear
     Response.ContentType = "text/xls"
     Response.AddHeader "content-disposition", "attachment; filename=export.xls"   'filename导出的文件名

     '点导出按钮后事件

     Response.Write "文件编号"&chr(9)&"文件名称"&chr(9)&"文件版次"&chr(9)&"发起时间"&chr(9)&"生效时间"&chr(13)
    '导出时

     set conn=server.createobject("adodb.connection")
      conn.open "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=xformdemo;Data Source=127.0.0.1"

     SQL="SELECT * FROM c_dept"

     Set rs=conn.execute(SQL)
     'STOP
     total=rs.fields.count      '总共的列数
    'response.write total
     while not rs.eof
      i=0
      while i<cint(total)
          Data=Data&rs(i)&chr(9)
       i=i+1 
      wend
      Response.Write Data&chr(13)
      Data=""
      rs.moveNext
     wend
     rs.close
     conn.close
     Response.Flush
     Response.End

    %>




























    =================================================================================

      说明:复制表(只复制结构,源表名:a 新表名:b)  
       
         SQL: select * into b from a where 1<>1
       
         说明:拷贝表(拷贝数据,源表名:a 目标表名:b)  
       
         SQL: insert into b(a, b, c) select d,e,f from b;
       
         说明:显示文章、提交人和最后回复时间  
       
         SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate

    from table where table.title=a.title) b
       
         说明:外连接查询(表名1:a 表名2:b)  
       
         SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
     首先引用Imports system.IO

       '创建文件夹
        Public Sub CreateName()
            N = 0
            Dim Path As String = "\\" & getIniNode(Application.StartupPath &

    "\system\Gardman.cfg", "ServerName")
            StrEmail = Path & "\" & "Email文件存储"
            Try
                '根据启动目录建立一个Directoryinfo对象
                Dim MyDirectoryInfo As New DirectoryInfo(StrEmail)
                MyDirectoryInfo.CreateSubdirectory(CboInputDate.Value)   '创建一个它的子目录
                StrEmail = StrEmail & "\" & CboInputDate.Value
    &n

    创建表名中字段的约束2006年07月19日 星期三 01:36在一个表中,要限制一个字段只能拥有几个值的方

    法.
    在表结构设计中选中CHECK约束:点新建,约束名可以自己取,只要符合命名规则即可。
    假设要设置QCType这个列只能默认的几个选项:设置方法可以如下:
    ([QCType] is null or ([QCType] = 'Other' or ([QCType] = 'Fittings' or [QCType] = 'Amount')))
    相当于这个列可以为空,或者可以为Other(其他)或者为Fittings(配件)或Amount(金额)这几个选项,其

    它选项,输入进去,将提示相关的错误信息。

    Sql Server实用操作小技巧集合
    包括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查

    备份集、修复数据库等
    (一)挂起操作
    在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:
    到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    删除PendingFileRenameOperations

    (二)收缩数据库
    --重建索引
    DBCC REINDEX
    DBCC INDEXDEFRAG
    --收缩数据和日志
    DBCC SHRINKDB
    DBCC SHRINKFILE

    (三)压缩数据库
    dbcc shrinkdatabase(dbname)

    (四)转移数据库给新用户以已存在用户权限
    exec sp_change_users_login 'update_one','newname','oldname'
    go

    (五)检查备份集
    RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

    (六)修复数据库
    ALTER DATABASE [dvbbs] SET SINGLE_USER
    GO
    DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
    GO
    ALTER DATABASE [dvbbs] SET MULTI_USER
    GO

     COMPUTE BY 子句使您得以用同一 SELECT 语句既查看明细行,又查看汇总行。可以计算子组的汇总值,

    也可以计算整个结果集的汇总值。

    COMPUTE 子句需要下列信息:

    可选的 BY 关键字,该关键字可按对一列计算指定的行聚合。


    行聚合函数名称;例如,SUM、AVG、MIN、MAX 或 COUNT。


    要对其执行行聚合函数的列。
    COMPUTE 生成的结果集
    COMPUTE 所生成的汇总值在查询结果中显示为分离的结果集。包括 COMPUTE 子句的查询的结果类似于控

    制中断报表,即汇总值由指定的组(或

    称中断)控制的报表。可以为各组生成汇总值,也可以对同一组计算多个聚合函数。

    当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:

    每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。


    每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。
    当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:

    每个组的第一个结果集是包含选择列表信息的所有明细行。


    第二个结果集有一行,其中包含 C
    使SQL数据库日志1G多收缩成几兆的过程2006年07月19日 星期三 01:25首先在您要收缩的数据库中,进去

    查询分析器:
    输入如下代码:DUMP TRANSACTION [db_name] WITH NO_LOG     [db_name]:数据库的名称
    然后用“收缩数据库”工具将删除后留下的空白空间收回。具体如下操作:
    然后选中要收缩的数据库,右击所有任务,再点收缩数据库。会弹出一个窗口,点击收缩文件下面的一个

    文件按钮,在下拉框中,选择数据库名称_Log的文件,在收缩操作中,选择第四个按钮,看它最小值能小

    的那个值,你就填那个最小的值,接着点确定即可。


     

  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/winner/p/480861.html
Copyright © 2011-2022 走看看