ASP는 Excel 테이블 데이터를 SQLServer 데이터베이스로 대량 가져오기

4124 단어 excel 가져오기
ASP에서 Excel 테이블 데이터를 SQLServer 데이터베이스에 대량 가져오기 설명: 1.가져온 작업 표는 기본적으로 Sheet1로 명명되며, 물론 다른 것으로 지정할 수도 있지만, 프로그램의 이름과 일치해야 합니다. 2.가져온 작업표에 첫 번째 열의 첫 줄에 데이터가 있어야 합니다. 3.가져온 작업표의 열 수는 프로그램과 일치해야 합니다.
 
'    Excel     
Function OpenExcel(path)
  dim excel,rs,strsql
  On Error Resume Next
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set excel = Server.CreateObject("ADODB.Connection")
  excel.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & path
  If Err.number<> 0 Then
    Response.Write "      Excel      ,      ,    !"
    Response.End
  End If
  strsql = "SELECT * FROM [Sheet1$]" '          ,   Sheet1$
  Set rs = excel.Execute(strsql)
  Set OpenExcel = rs
End Function

 
'        
Dim rsInfo
Set rsInfo = Server.CreateObject("ADODB.RecordSet")
Set rsInfo = OpenExcel("E:/a.xls") '         Server.Path   

'      
If rsInfo.State<> 1 Then
  Response.Write "   Excel            Sheet1,    !"
  Response.End
End If

If rsInfo.EOF And rsInfo.BOF Then
  Response.Write "    Excel     ,    !"
  Response.End
End If

If IsNull(rsInfo.Fields(0)) or Trim(rsInfo.Fields(0))="" Then
  Response.Write "    Excel     ,    !"
  Response.End
End If

'           ,      
If rsInfo.Fields.Count< 7 Then
  Response.Write "Excel          ,    !"
  Response.End
End If

'       
dim dbrs,conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
Set dbrs = Server.CreateObject("ADODB.Recordset")
' : G_DB_ConnectString          ,    
conn.ConnectionString = G_DB_ConnectString
conn.Open '       

'     
sql = "IF EXISTS (SELECT * FROM sysobjects WHERE xtype='U' and name='tmp_PartRes') "
sql = sql & "BEGIN Drop table tmp_PartRes END "
sql = sql & "Create table tmp_PartRes([ID] int identity(1,1),"
sql = sql & "PartID varchar(100),Brand varchar(100),[Package] varchar(100),"
sql = sql & "BatchNo varchar(100),[Price] varchar(100),[Stock] varchar(100) default('0'),"
sql = sql & "Brief varchar(100),StockFlag int default(1),"
sql = sql & "SuperFlag int default(1),SaleFlag int default(1))"
conn.execute sql

'       :       ,     ,              ,     ,
'        ,         ,         : where ID = -1
sql = "SELECT * FROM tmp_PartRes"
dbrs.CursorLocation = 3 '       3
dbrs.Open sql,conn, 3, 4 '        3 4

'      ,                 ,     ,         .
Set dbrs.ActiveConnection = Nothing
conn.close

'  Excel    ,  excel            .
While Not rsInfo.EOF
  If Trim(rsInfo.Fields(0))<> "" Then
    dbrs.AddNew
    dbrs("PartID") = Ucase(Trim(rsInfo.Fields(0)))
    dbrs("Brand") = Trim(rsInfo.Fields(1))
    dbrs("Package") = Trim(rsInfo.Fields(2))
    dbrs("BatchNo") = Trim(rsInfo.Fields(3))
    dbrs("Price") = Trim(rsInfo.Fields(4))
    If Trim(rsInfo.Fields(5))<>"" Then
        dbrs("Stock") = Trim(rsInfo.Fields(5))
     Else
         dbrs("Stock") = "0"
     End If
    dbrs("Brief") = Trim(rsInfo.Fields(6))
  End If
  rsInfo.MoveNext
Wend

'            
conn.Open '    
dbrs.ActiveConnection = conn
dbrs.UpdateBatch '      

'     ,     
dbrs.Close
Set dbrs = Nothing
rsInfo.Close
Set rsInfo = Nothing

 
주: 원문 출처: http://freshflower.iteye.com/blog/1774733

좋은 웹페이지 즐겨찾기