아마도 모든 Excel을 뿌려주는데는 무리가 없을것입니다.
저번에 올렸던 자료와는 다르게,,
미리 Excel 자료에서 가공을 해주어야 할 부분도 없습니다.~
ADO 를 쓰지도 않습니다~
병합된 셀도 병합을 해서 뿌려줍니다. (잔머리좀 썼죠)
단,,, 서버에 Excel 이 깔려 있어야 합니다.(당연하죠...)
부디 도움이 되시길 바라며...
만약,, 불러온 파일을 DB 에 저장하시려면,,
병합된 셀을 처리하는부분을 없애고 그냥 DB 에 저장하도록 하시면 되겠네요..
질문사항은 메일로 주시던가,, 답글을 달아주세요.
쪽지로 질문하시면,, 왔는지 안왔는지 모르거든요.
* selectForm.asp 의 내용
Excel 파일 보여주기<p>
원하는 Excel 파일을 불러온후 OK 를 누르세요 <p>
<form action=showExcel.asp method=post>
<input type=file name=xlsFile>
<br>
<input type=submit value=OK>
</form>
* showExcel.asp 의 내용
<%
'----------------------------------------------------------------------
' 설명 : 엑셀파일을 불러서 HTML 형식으로 뿌려줌
' 날짜 : 2001/12/20
' Author : ilikefox@yahoo.com
'----------------------------------------------------------------------
'on error resume next
xlsFile = Request.Form("xlsFile")
Set objApp = CreateObject("Excel.Application") '엑셀 객체 생성
set objWorkbooks = objApp.Workbooks 'WorkBooks 객체 생성
Set objWorkbook = objWorkbooks.Open(xlsFile) 'Excel 파일 Open
Set objWorksheet = objWorkbook.Worksheets(1) 'Worksheet 객체 생성
Set objRange = objWorksheet.UsedRange '사용된 영역 객체 생성
aData= objRange.value '사용된 영역의 값들을 2차원배열 aData로 넘김
%>
<table border=1>
<%
For i=1 to uBound(aData, 1) ' 배열의 끝까지 행루프
%>
<tr>
<%
For j=1 to uBound(aData, 2) ' 배열의 끝까지 열루프
Set objCell = objWorksheet.Cells(i, j) '셀값을 객체로 선언
''''''''''' 병합되어있는 곳이면 '''''''''''''
If objCell.MergeCells then
aM = objCell.MergeArea.value
If uBound(aM,2) <> 1 and uBound(aM,1) <> 1 Then
'가로 세로 모두 병합된경우
If not isempty(objCell.value) then
%>
<td align="center" colspan="<%=uBound(aM,2)%>"
rowspan="<%=uBound(aM,1)%>"><%=objCell.value%></td>
<%
End If
ElseIf uBound(aM,2) <> 1 Then ' 가로로 병합되어있다면
If not isempty(objCell.value) then
%>
<td align="center" colspan="<%=uBound(aM,2)%
>"><%=objCell.value%></td>
<%
End If
ElseIf uBound(aM,1) <> 1 Then ' 세로로 병합되어있다면
If not isempty(objCell.value) then
%>
<td align="center" rowspan="<%=uBound(aM,1)%
>"><%=objCell.value%></td>
<%
End If
End If
' 참고사항 --> 병합된 셀의 값 : eCell.MergeArea.Cells(1,1)
''''''''''' 병합된곳이 아니면 그냥 뿌려줌 '''''''''''
Else
%>
<td>
<% If IsEmpty(aData(i, j)) Then %>
<% Else %>
<%=aData(i, j)%>
<% End If %>
</td>
<%
''''''''''''' 병합인지 아닌지 If 절 끝 '''''''''''
End If
%>
<%
Next ' 배열의 끝까지 열 루프 끝
%>
</tr>
<%
Next ' 배열의 끝까지 행 루프 끝
%>
</table>
<%
'아래 사항들은 반드시 적어서 메모리에서 없애 주어야 합니다.
'그렇지 않으면 메모리에 계속상주하면서 열린 문서는 잠기게 됩니다.
Set objCell = Nothing
Set objRange = Nothing
Set objWorksheet = Nothing
objWorkbook.Close
Set objWorkbook = Nothing
Set objWorkbokks = Nothing
Set objApp = Nothing
%>
============================================================================
이건 제가 고친 소스입니다. 대략 생각나는대로 고쳤습니다============================================================================
* selectForm.asp 의 내용
Excel 파일 보여주기<p>
원하는 Excel 파일을 불러온후 OK 를 누르세요 <p>
<form action=showExcel.asp method=post>
<input type=file name=xlsFile> <!-- 이거 필요 없습니다. -->
<br>
<input type=submit value=OK>
</form>
* showExcel.asp 의 내용
<%
'----------------------------------------------------------------------
' 설명 : 엑셀파일을 불러서 HTML 형식으로 뿌려줌
' 날짜 : 2001/12/20
' Author : ilikefox@yahoo.com
'----------------------------------------------------------------------
<!-- include file = db.asp --> <!-- 추가부분 -->
'on error resume next
xlsFile = "D:\aaa\bbb.xls" <!--추가 .. 서버의 경로가 지정되 있어야 합니다. -->
<!-- selectForm.asp에서 받은 파일명은 유저컴퓨터에 있는 파일 밖에 경로가 지정되지 않습니다. -->
Set objApp = CreateObject("Excel.Application") '엑셀 객체 생성
set objWorkbooks = objApp.Workbooks 'WorkBooks 객체 생성
Set objWorkbook = objWorkbooks.Open(xlsFile) 'Excel 파일 Open
Set objWorksheet = objWorkbook.Worksheets(1) 'Worksheet 객체 생성
Set objRange = objWorksheet.UsedRange '사용된 영역 객체 생성
aData= objRange.value '사용된 영역의 값들을 2차원배열 aData로 넘김
%>
<%
%>
<table border=1>
<%
For i=1 to uBound(aData, 1) ' 배열의 끝까지 행루프
%>
<tr>
<%
For j=1 to uBound(aData, 2) ' 배열의 끝까지 열루프
Set objCell = objWorksheet.Cells(i, j) '셀값을 객체로 선언
%>
<td>
<% If IsEmpty(aData(i, j)) Then %>
<% Else %>
<%=aData(i, j)%>
<% End If %>
</td>
<%
Next ' 배열의 끝까지 열 루프 끝
<!--추가부분-->
sql = "insert t_emp_info(column1,column2,column3......) "
sql = sql & " values('"&aData(i,1)&"','"&aData(i,2)&"','"&aData(i,2)&"',......)
db.execute(sql)
%>
</tr>
<%
Next ' 배열의 끝까지 행 루프 끝
%>
</table>
<%
'아래 사항들은 반드시 적어서 메모리에서 없애 주어야 합니다.
'그렇지 않으면 메모리에 계속상주하면서 열린 문서는 잠기게 됩니다.
Set objCell = Nothing
Set objRange = Nothing
Set objWorksheet = Nothing
objWorkbook.Close
Set objWorkbook = Nothing
Set objWorkbokks = Nothing
Set objApp = Nothing
db.close
set db = nothing
%>
[출처] Asp로 엑셀파일읽기|작성자 하드코더
댓글 없음:
댓글 쓰기