ASP를 사용하여 클라이언트쪽 디스플레이를 위한 스프레드시트 XML을 만드는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 288130 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Office 스프레드시트 구성 요소를 사용하여 XMLSS(XML 스프레드시트) 형식으로 스프레드시트를 만드는 Microsoft Active Server Pages(ASP) 스크립트를 설명합니다. XMLSS는 다음과 같은 여러 가지 방법 중 하나로 클라이언트쪽에 표시될 수 있습니다.
  • 웹 페이지의 스프레드시트 구성 요소에 표시
  • 브라우저의 현재 위치에 표시된 Microsoft Excel에 표시
  • Microsoft Excel에서 직접 열기

추가 정보

서버쪽 코드로 스프레드시트 구성 요소를 사용하여 스프레드시트를 만들면 Microsoft Excel의 서버쪽 자동화를 사용하는 것보다 개선된 확장성 및 향상된 성능을 얻을 수 있습니다. 서버에서 Excel과 같은 Office 응용 프로그램은 자동화하지 않는 것이 좋습니다. 동일한 결과를 얻을 수 있는 다른 방법이 있는 경우에는 이 방법을 사용하지 마십시오. XMLSS에서는 스프레드시트 구성 요소 및 Microsoft Excel에 공통되는 여러 기능을 계속 사용할 수 있습니다. 다중 시트 통합 문서, 셀 서식, 자동 필터, 셀 수식 및 다시 계산은 이러한 기능 중 일부입니다. 스프레드시트 구성 요소에는 Microsoft Excel의 개체 모델과 가장 비슷한 개체 모델이 있습니다. 따라서 Excel 개체 모델을 잘 알면 스프레드시트 구성 요소에 사용할 수 있도록 기존 Excel 코드를 쉽게 수정하여 적용할 수 있습니다.

다음 예제에서는 ASP에서 스프레드시트 구성 요소를 사용하여 다중 시트 통합 문서를 XMLSS로 생성하는 방법을 보여 줍니다. 또한 이 예제에서는 클라이언트쪽 웹 페이지 또는 Microsoft Excel에 결과 XMLSS를 표시하는 방법에 대해서도 설명합니다.

스프레드시트 구성 요소를 사용하여 XMLSS를 만드는 ASP 스크립트

다음 ASP를 웹 서버의 가상 루트 디렉터리에 XMLSS.asp로 저장합니다. 기본적으로 루트 디렉터리는 C:\inetpub\wwwroot입니다.
<% Language=VBScript %>

<%
    Response.Buffer = True
    Response.ContentType = "text/xml"

    Dim NumOrders, NumProds, r
    NumOrders = 300
    NumProds = 10
        
    Dim oSS
    Dim oOrdersSheet
    Dim oTotalsSheet
    Dim oRange
    Dim c
    
    Set oSS = CreateObject("OWC10.Spreadsheet")
    Set c = oSS.Constants

    'Rename Sheet1 to "Orders", rename Sheet2 to "Totals" and remove Sheet3
    Set oOrdersSheet = oSS.Worksheets(1)
    oOrdersSheet.Name = "Orders"
    Set oTotalsSheet = oSS.Worksheets(2)
    oTotalsSheet.Name = "Totals"
    oSS.Worksheets(3).Delete
    
    '=== Build the First Worksheet (Orders) ==============================================
        
    'Add headings to A1:F1 of the Orders worksheet and apply formatting
    Set oRange = oOrdersSheet.Range("A1:F1")
    oRange.Value = Array("Order Number", "Product ID", "Quantity", "Price", "Discount", "Total")
    oRange.Font.Bold = True
    oRange.Interior.Color = "Silver"
    oRange.Borders(c.xlEdgeBottom).Weight = c.xlThick
    oRange.HorizontalAlignment = c.xlHAlignCenter
   
    'Apply formatting to the columns
    oOrdersSheet.Range("A:A").ColumnWidth = 20
    oOrdersSheet.Range("B:E").ColumnWidth = 15
    oOrdersSheet.Range("F:F").ColumnWidth = 20
    oOrdersSheet.Range("A2:E" & NumOrders + 1 _
        ).HorizontalAlignment = c.xlHAlignCenter
    oOrdersSheet.Range("D2:D" & NumOrders + 1).NumberFormat = "0.00"
    oOrdersSheet.Range("E2:E" & NumOrders + 1).NumberFormat = "0 % "
    oOrdersSheet.Range("F2:F" & NumOrders + 1).NumberFormat = "$ 0.00" '"_($* #,##0.00_)"
        
    'Obtain the order information for the first five columns in the Orders worksheet
    'and populate the worksheet with that data starting at row 2
    Dim aOrderData
    aOrderData = GetOrderInfo
    oOrdersSheet.Range("A2:E" & NumOrders + 1).Value = aOrderData
    
    'Add a formula to calculate the order total for each row and format the column
    oOrdersSheet.Range("F2:F" & NumOrders + 1).Formula = "=C2*D2*(1-E2)"
        oOrdersSheet.Range("F2:F" & NumOrders + 1).NumberFormat = "_(  $* #,##0.00   _)"

    'Apply a border to the used rows
    oOrdersSheet.UsedRange.Borders(c.xlInsideHorizontal).Weight = c.xlThin
    oOrdersSheet.UsedRange.BorderAround , c.xlThin, 15
    
    'Turn on AutoFilter and display an initial criteria where
    'the Product ID (column 2) is equal to 5
    oOrdersSheet.UsedRange.AutoFilter
    oOrdersSheet.AutoFilter.Filters(2).Criteria.FilterFunction = c.ssFilterFunctionInclude
    oOrdersSheet.AutoFilter.Filters(2).Criteria.Add "5"
    oOrdersSheet.AutoFilter.Apply
    
    'Add a Subtotal at the end of the usedrange
    oOrdersSheet.Range("F" & NumOrders + 3).Formula = "=SUBTOTAL(9, F2:F" & NumOrders + 1 & ")"
    
    'Apply window settings for the Orders worksheet
    oOrdersSheet.Activate   'Makes the Orders sheet active
    oSS.Windows(1).ViewableRange = oOrdersSheet.UsedRange.Address
    oSS.Windows(1).DisplayRowHeadings = False
    oSS.Windows(1).DisplayColumnHeadings = False
    oSS.Windows(1).FreezePanes = True
    oSS.Windows(1).DisplayGridlines = False
    
    '=== Build the Second Worksheet (Totals) ===========================================
    
    'Change the Column headings and hide row headings
    oTotalsSheet.Activate
    oSS.Windows(1).ColumnHeadings(1).Caption = "Product ID"
    oSS.Windows(1).ColumnHeadings(2).Caption = "Total"
    oSS.Windows(1).DisplayRowHeadings = False
    
    'Add the product IDs to column 1
    Dim aProductIDs
    aProductIDs = GetProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).Value = aProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).HorizontalAlignment = c.xlHAlignCenter

    'Add a formula to column 2 that computes totals per product from the Orders Sheet
    oTotalsSheet.Range("B1:B" & NumProds).Formula = _
        "=SUMIF(Orders!B$2:B$" & NumOrders + 1 & ",A1,Orders!F$2:F$" & NumOrders + 1 & ")"
    oTotalsSheet.Range("B1:B" & NumProds).NumberFormat = "_(  $* #,##0.00   _)"

    'Apply window settings for the Totals worksheet
    oSS.Windows(1).ViewableRange = oTotalsSheet.UsedRange.Address
    
    '=== Setup for final presentation ==================================================
    
    oSS.DisplayToolbar = False
    oSS.AutoFit = True
    oOrdersSheet.Activate

    Response.Write oSS.XMLData
    Response.End


Function GetOrderInfo()
    ReDim aOrderInfo(NumOrders,5)
    Dim aPrice, aDisc
    aPrice = Array(10.25, 9.5, 2.34, 6.57, 9.87, 4.55, 6, 13.05, 3.3, 5.5)
    aDisc = Array(0, 0.1, 0.15, 0.2)
    For r = 0 To NumOrders-1
        aOrderInfo(r, 0) = "'" & String(7-Len(CStr(r+1)), "0") & r+1 'Col 1 is Order Number
        aOrderInfo(r, 1) = Int(Rnd() * NumProds) + 1                 'Col 2 is Product ID
        aOrderInfo(r, 2) = Int(Rnd() * 20) + 1                       'Col 3 is Quantity
        aOrderInfo(r, 3) = aPrice(aOrderInfo(r, 1)-1)                'Col 4 is Price
        aOrderInfo(r, 4) = aDisc(Int(Rnd() * 4))                     'Col 5 is Discount
    Next
    GetOrderInfo = aOrderInfo
End Function

Function GetProductIDs()
    ReDim aPIDs(NumProds, 1)
    For r = 0 To NumProds-1
        aPIDs(r, 0) = r+1
    Next
    GetProductIDs = aPIDs
End Function

%>
				

웹 페이지에 XMLSS 표시

웹 페이지에 예제 XMLSS를 표시하려면 다음과 같이 스프레드시트 구성 요소가 ASP에 대한 URL로 연결되도록 XMLURL 속성을 설정하기만 하면 됩니다.
<html>

<body>

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1">
  <param name="XMLURL" value="http://YourWebServer/xmlss.asp">
</object>

</body>

</html>
				
참고 Microsoft Office 2003을 사용하는 경우 위 코드의 classid를 적절하게 변경해야 할 수 있습니다.

앞의 HTML에서 XMLURL 속성은 <param> 태그를 사용하여 설정됩니다. 또한 필요한 경우 런타임에 다음 코드를 사용하여 XMLURL 속성을 설정할 수도 있습니다.
   Spreadsheet1.XMLURL = "http://YourWebServer/xmlss.asp"
				

Microsoft Excel에 XMLSS 표시

스프레드시트 구성 요소에서 만든 XMLSS를 Microsoft Excel에서 열 수 있습니다. 스프레드시트 구성 요소로 구현한 서식 및 기능은 Microsoft Excel과 공유될 수 있습니다. 스프레드시트 구성 요소에서는 Excel에서 지원하지 않는 일부 기능을 지원하며 Excel에서는 스프레드시트 구성 요소에서 지원하지 않는 일부 기능을 지원합니다. Excel에서 구현하지 않는 XML 태그 또는 특성은 XMLSS를 열 때 무시됩니다.

Microsoft Excel에서 ASP 예제 스크립트의 결과를 보려면 다음 단계를 수행하십시오.
  1. Microsoft Excel을 시작합니다.
  2. 파일 메뉴에서 열기를 누릅니다.
  3. 파일 이름 상자에 http://YourWebServer/xmlss.asp를 입력한 다음 열기를 누릅니다.
통합 문서를 검사합니다. 즉, Excel에서 열었을 때 런타임에 적용된 데이터 및 형식이 통합 문서에 모두 표시되는지 확인합니다. 한 가지 예외가 있습니다. 스프레드시트 구성 요소에서 만든 머리글 캡션은 Microsoft Excel에서 공유하지 않는 스프레드시트 구성 요소의 기능이므로 Excel에서는 표시되지 않습니다. Excel에 표시할 용도로 스프레드시트 구성 요소를 사용하여 XMLSS를 만든 경우 각각이 지원하는 기능을 알고 있어야 합니다.

ASP에서 만든 XMLSS를 Microsoft Excel에서 여는 다른 방법은 ASP에서 Excel MIME(Multipurpose Internet Mail Extensions) 형식을 ContentType으로 지정하는 것입니다. Excel MIME 형식을 사용하여 ASP를 탐색하면 XMLSS가 브라우저의 현재 위치에서 호스트되는 Microsoft Excel에 렌더링됩니다. 이렇게 하려면 다음과 같이 하십시오.
  1. 텍스트 편집기에서 XMLSS.asp를 엽니다.
  2. 다음 스크립트 줄을 변경합니다.
    Response.ContentType = "text/xml"
    					
    코드 줄을 다음과 같이 변경합니다.
    Response.ContentType = "application/vnd.ms-excel"
    					
  3. XMLSS.asp에 변경 내용을 저장한 다음 Windows Internet Explorer를 시작합니다.
  4. http://YourWebServer/XMLSS.asp를 탐색합니다. XML 스프레드시트가 브라우저의 현재 위치에서 호스트되는 Microsoft Excel에 렌더링됩니다.

참조

자세한 내용을 보려면 다음 Microsoft 웹 사이트의 Office 웹 구성 요소 항목을 참조하십시오.
http://support.microsoft.com/ofd(영문)
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
285891 Visual Basic 또는 ASP를 사용하여 Excel 2002 및 Excel 2003용 XML 스프레드시트를 만드는 방법
278976 XSL을 사용하여 서버쪽 사용 Excel XML 스프레드시트를 변환하는 방법
257757 Office의 서버쪽 자동화에 대한 고려 사항




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 288130 - 마지막 검토: 2008년 1월 22일 화요일 - 수정: 5.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Web Components
  • Microsoft Office Web Components
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Active Server Pages 4.0
키워드:?
kbhowto kbofficewebspread KB288130

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com