http://blog.naver.com/hardcoding/140015653406

<---- 내용 ---->
아마도 모든 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' 카테고리의 다른 글

엑셀 데이터를 DB 저장  (0) 2010.06.28
ASP(Active Server Page) Excel Component  (0) 2010.06.28
싱글쿼테이션 처리  (0) 2010.05.20
ASP 보안  (0) 2010.05.20
웹 프린트 모듈  (0) 2010.05.18

+ Recent posts