현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

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

Office 2003에 대한 지원이 종료되었습니다.

Microsoft는 2014년 4월 8일 Office 2003에 대한 지원을 종료했습니다. 이러한 변경에 따라 해당 소프트웨어 업데이트 및 보안 옵션이 영향을 받습니다. 사용자에게 미치는 영향 및 계속 보호를 받는 방법에 대해 알아보십시오.

요약
이 문서에서는 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.EndFunction 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 = aOrderInfoEnd FunctionFunction GetProductIDs()    ReDim aPIDs(NumProds, 1)    For r = 0 To NumProds-1        aPIDs(r, 0) = r+1    Next    GetProductIDs = aPIDsEnd 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 웹 구성 요소 항목을 참조하십시오.자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
285891 Visual Basic 또는 ASP를 사용하여 Excel 2002 및 Excel 2003용 XML 스프레드시트를 만드는 방법
278976 XSL을 사용하여 서버쪽 사용 Excel XML 스프레드시트를 변환하는 방법
257757 Office의 서버쪽 자동화에 대한 고려 사항




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

문서 ID: 288130 - 마지막 검토: 01/22/2008 09:57:00 - 수정: 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
피드백