用JS讀取excel的例子
<%
\'\'
\'*********************************************************
\' 目的:讀取excel資料後插入到數據庫中同時紀錄成功和失敗的數目
\' 傳入:
\' 返回:
\'*********************************************************
Function GetExcel()
Dim conn
Dim StrConn
Dim rs
Dim Sql
file=""
Set conn=Server.CreateObject("ADODB.Connection")
StrConn="Driver={Microsoft Excel Driver (*.xls)};DBQ="& Server.MapPath("EXCEL_DATA.xls")
\'\'StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dd.xls;Extended Properties=Excel 8.0"
conn.Open StrConn
Set rs = Server.CreateObject("ADODB.Recordset")
Sql="select * from [Sheet1$]"
rs.Open Sql,conn,2,2
\'\'讀取excel中的字段名稱,並檢察字段順序是否正確
for i=0 to rs.Fields.Count-1
FILE_HEAD=FILE_HEAD&rs(i).Name
next
\'\'response.write FILE_HEAD
IF trim(FILE_HEAD)<>"版本使用單位類綱目節類說明綱說明目說明檔名保存年限共同分類號" THEN
RESPONSE.WRITE "<SCRIPT LANGUAGE=\'JAVASCRIPT\'>alert(\'EXCEL文件字段順序錯誤或字段數不對!!\')</SCRIPT>"
exit Function
END IF
\'\'讀取excel中的資料
do while Not rs.EOF
\'\'將讀取的資料INSERT到oracle數據庫
for i=0 to rs.Fields.Count-1
EDITION=rs(0)
FILE_CODE=rs(2)+rs(3)+rs(4)+rs(5)
FILE_NAME=rs(9)
KIND1_DESC=rs(6)
KIND2_DESC=rs(7)
KIND3_DESC=rs(8)
KIND4_DESC=rs(9)
SAVE_YEAR=rs(10)
FILE_UNIT=rs(1)
COM_FILE_CODE=rs(11)
\'\'==============================================
CHECED_SQL="Select nvl(FILE_CASE,\'\') FILE_CASE FROM ODM67 where EDITION=\'"&TRIM(EDITION)&"\' and FILE_CODE=\'"&TRIM(FILE_CODE)&"\' "
If mobjDB.OpenSQL(CHECED_SQL) Then
If mobjDB.IsEmpty Then
FILE_CASE="0001"
CASE_DESC="總案"
INS_SQL=""
INS_SQL=INS_SQL & " INSERT INTO ODM67(" & VBCRLF
INS_SQL=INS_SQL & " EDITION,FILE_CODE,FILE_CASE," & VBCRLF
INS_SQL=INS_SQL & " CASE_DESC,CRT_USER,CRT_DATE," & VBCRLF
INS_SQL=INS_SQL & " CRT_TIME,MDF_USER,MDF_DATE,MDF_TIME)" & VBCRLF
INS_SQL=INS_SQL & " VALUES(" & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(EDITION)&"\',\'"&TRIM(FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_CASE)&"\',\'"&TRIM(CASE_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(SESSION("USER_ID"))&"\',\'"&TRIM(TODAY)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(NOWTIME)&"\',\'"&TRIM(SESSION("USER_ID"))&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(TODAY)&"\',\'"&TRIM(NOWTIME)&"\')"
CALL mobjDB.ExecSQL(INS_SQL)
End If
End If
\'\'==============================================
INS_SQL=""
INS_SQL=INS_SQL & " INSERT INTO ODM61( " & VBCRLF
INS_SQL=INS_SQL & " EDITION,FILE_CODE,FILE_NAME,KIND1_DESC," & VBCRLF
INS_SQL=INS_SQL & " KIND2_DESC,KIND3_DESC,KIND4_DESC,SAVE_YEAR," & VBCRLF
INS_SQL=INS_SQL & " FILE_UNIT,COM_FILE_CODE,CRT_USER,CRT_DATE," & VBCRLF
INS_SQL=INS_SQL & " CRT_TIME,MDF_USER,MDF_DATE,MDF_TIME)" & VBCRLF
INS_SQL=INS_SQL & " VALUES(" & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(EDITION)&"\',\'"&TRIM(FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_NAME)&"\',\'"&TRIM(KIND1_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(KIND2_DESC)&"\',\'"&TRIM(KIND3_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(KIND4_DESC)&"\',\'"&TRIM(SAVE_YEAR)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_UNIT)&"\',\'"&TRIM(COM_FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(SESSION("USER_ID"))&"\',\'"&TRIM(TODAY)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(NOWTIME)&"\',\'"&TRIM(SESSION("USER_ID"))&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(TODAY)&"\',\'"&TRIM(NOWTIME)&"\')"
\'\'RESPONSE.WRITE INS_SQL& "<BR>"
IF mobjDB.ExecSQL(INS_SQL) THEN
InCount=InCount+1
ELSE
NoCount=NoCount+1
file=file&TODAY&" "&NOWTIME&" "&EDITION&" "&FILE_CODE & VBCRLF
END IF
exit for
next
rs.MoveNext
Loop
rs.close
set rs=nothing
Conn.close
set StrConn=nothing
if file<>"" then
CALL CreateFolder()
call SetFile(file)
strpath=server.mappath("EXCEL_DATA.xls")
call DeleteFolder(strpath)
file=""
end if
End Function
\'*********************************************************
\' 目的: 新建一個指定的文件,如果存在就不新建,並向文件追加紀錄
\' 傳入: file:要追加的數據
\' 返回:
\'*********************************************************
Function SetFile(file)
file_path="C:\LOG\OD60err.log"
set fstemp=server.CreateObject("Scripting.FileSystemObject")
IF (fstemp.FileExists(file_path)) THEN
ELSE
set filetemp=fstemp.CreateTextFile(file_path,true)
filetemp.writeLine "紀錄匯入失敗資料"
filetemp.close
END IF
\'\'追加失敗資料信息OpenTextFile
set filetemp=fstemp.OpenTextFile(file_path,8,true)
filetemp.writeLine file
filetemp.close
set filetemp=Nothing
set fstemp=Nothing
End Function
\'*********************************************************
\' 目的: 新建一個指定的文件夾,如果存在就不新建
\' 傳入:
\' 返回:
\'*********************************************************
Function CreateFolder()
Dim fso, f
folder="c:\LOG"
Set fso = CreateObject("Scripting.FileSystemObject")
IF fso.FolderExists(folder) THEN
ELSE
Set f = fso.CreateFolder(folder)
CreateFolderDemo = f.Path
END IF
End Function
\'*********************************************************
\' 目的:刪除上傳的文件,
\' 傳入:傳入上傳文件的虛擬路徑
\' 返回:
\'*********************************************************
Function DeleteFolder(filepath)
Dim fso, f
folder="EXCEL_DATA.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
\'\'response.write fso.FileExists(filepath)
IF fso.FileExists(filepath) THEN
fso.DeleteFile filepath
END IF
End Function
%>
\'\'
\'*********************************************************
\' 目的:讀取excel資料後插入到數據庫中同時紀錄成功和失敗的數目
\' 傳入:
\' 返回:
\'*********************************************************
Function GetExcel()
Dim conn
Dim StrConn
Dim rs
Dim Sql
file=""
Set conn=Server.CreateObject("ADODB.Connection")
StrConn="Driver={Microsoft Excel Driver (*.xls)};DBQ="& Server.MapPath("EXCEL_DATA.xls")
\'\'StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dd.xls;Extended Properties=Excel 8.0"
conn.Open StrConn
Set rs = Server.CreateObject("ADODB.Recordset")
Sql="select * from [Sheet1$]"
rs.Open Sql,conn,2,2
\'\'讀取excel中的字段名稱,並檢察字段順序是否正確
for i=0 to rs.Fields.Count-1
FILE_HEAD=FILE_HEAD&rs(i).Name
next
\'\'response.write FILE_HEAD
IF trim(FILE_HEAD)<>"版本使用單位類綱目節類說明綱說明目說明檔名保存年限共同分類號" THEN
RESPONSE.WRITE "<SCRIPT LANGUAGE=\'JAVASCRIPT\'>alert(\'EXCEL文件字段順序錯誤或字段數不對!!\')</SCRIPT>"
exit Function
END IF
\'\'讀取excel中的資料
do while Not rs.EOF
\'\'將讀取的資料INSERT到oracle數據庫
for i=0 to rs.Fields.Count-1
EDITION=rs(0)
FILE_CODE=rs(2)+rs(3)+rs(4)+rs(5)
FILE_NAME=rs(9)
KIND1_DESC=rs(6)
KIND2_DESC=rs(7)
KIND3_DESC=rs(8)
KIND4_DESC=rs(9)
SAVE_YEAR=rs(10)
FILE_UNIT=rs(1)
COM_FILE_CODE=rs(11)
\'\'==============================================
CHECED_SQL="Select nvl(FILE_CASE,\'\') FILE_CASE FROM ODM67 where EDITION=\'"&TRIM(EDITION)&"\' and FILE_CODE=\'"&TRIM(FILE_CODE)&"\' "
If mobjDB.OpenSQL(CHECED_SQL) Then
If mobjDB.IsEmpty Then
FILE_CASE="0001"
CASE_DESC="總案"
INS_SQL=""
INS_SQL=INS_SQL & " INSERT INTO ODM67(" & VBCRLF
INS_SQL=INS_SQL & " EDITION,FILE_CODE,FILE_CASE," & VBCRLF
INS_SQL=INS_SQL & " CASE_DESC,CRT_USER,CRT_DATE," & VBCRLF
INS_SQL=INS_SQL & " CRT_TIME,MDF_USER,MDF_DATE,MDF_TIME)" & VBCRLF
INS_SQL=INS_SQL & " VALUES(" & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(EDITION)&"\',\'"&TRIM(FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_CASE)&"\',\'"&TRIM(CASE_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(SESSION("USER_ID"))&"\',\'"&TRIM(TODAY)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(NOWTIME)&"\',\'"&TRIM(SESSION("USER_ID"))&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(TODAY)&"\',\'"&TRIM(NOWTIME)&"\')"
CALL mobjDB.ExecSQL(INS_SQL)
End If
End If
\'\'==============================================
INS_SQL=""
INS_SQL=INS_SQL & " INSERT INTO ODM61( " & VBCRLF
INS_SQL=INS_SQL & " EDITION,FILE_CODE,FILE_NAME,KIND1_DESC," & VBCRLF
INS_SQL=INS_SQL & " KIND2_DESC,KIND3_DESC,KIND4_DESC,SAVE_YEAR," & VBCRLF
INS_SQL=INS_SQL & " FILE_UNIT,COM_FILE_CODE,CRT_USER,CRT_DATE," & VBCRLF
INS_SQL=INS_SQL & " CRT_TIME,MDF_USER,MDF_DATE,MDF_TIME)" & VBCRLF
INS_SQL=INS_SQL & " VALUES(" & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(EDITION)&"\',\'"&TRIM(FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_NAME)&"\',\'"&TRIM(KIND1_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(KIND2_DESC)&"\',\'"&TRIM(KIND3_DESC)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(KIND4_DESC)&"\',\'"&TRIM(SAVE_YEAR)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(FILE_UNIT)&"\',\'"&TRIM(COM_FILE_CODE)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(SESSION("USER_ID"))&"\',\'"&TRIM(TODAY)&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(NOWTIME)&"\',\'"&TRIM(SESSION("USER_ID"))&"\'," & VBCRLF
INS_SQL=INS_SQL & " \'"&TRIM(TODAY)&"\',\'"&TRIM(NOWTIME)&"\')"
\'\'RESPONSE.WRITE INS_SQL& "<BR>"
IF mobjDB.ExecSQL(INS_SQL) THEN
InCount=InCount+1
ELSE
NoCount=NoCount+1
file=file&TODAY&" "&NOWTIME&" "&EDITION&" "&FILE_CODE & VBCRLF
END IF
exit for
next
rs.MoveNext
Loop
rs.close
set rs=nothing
Conn.close
set StrConn=nothing
if file<>"" then
CALL CreateFolder()
call SetFile(file)
strpath=server.mappath("EXCEL_DATA.xls")
call DeleteFolder(strpath)
file=""
end if
End Function
\'*********************************************************
\' 目的: 新建一個指定的文件,如果存在就不新建,並向文件追加紀錄
\' 傳入: file:要追加的數據
\' 返回:
\'*********************************************************
Function SetFile(file)
file_path="C:\LOG\OD60err.log"
set fstemp=server.CreateObject("Scripting.FileSystemObject")
IF (fstemp.FileExists(file_path)) THEN
ELSE
set filetemp=fstemp.CreateTextFile(file_path,true)
filetemp.writeLine "紀錄匯入失敗資料"
filetemp.close
END IF
\'\'追加失敗資料信息OpenTextFile
set filetemp=fstemp.OpenTextFile(file_path,8,true)
filetemp.writeLine file
filetemp.close
set filetemp=Nothing
set fstemp=Nothing
End Function
\'*********************************************************
\' 目的: 新建一個指定的文件夾,如果存在就不新建
\' 傳入:
\' 返回:
\'*********************************************************
Function CreateFolder()
Dim fso, f
folder="c:\LOG"
Set fso = CreateObject("Scripting.FileSystemObject")
IF fso.FolderExists(folder) THEN
ELSE
Set f = fso.CreateFolder(folder)
CreateFolderDemo = f.Path
END IF
End Function
\'*********************************************************
\' 目的:刪除上傳的文件,
\' 傳入:傳入上傳文件的虛擬路徑
\' 返回:
\'*********************************************************
Function DeleteFolder(filepath)
Dim fso, f
folder="EXCEL_DATA.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
\'\'response.write fso.FileExists(filepath)
IF fso.FileExists(filepath) THEN
fso.DeleteFile filepath
END IF
End Function
%>