Как использовать технологию ASP для построения электронной таблицы в формате XML на экране клиентского компьютера

Переводы статьи Переводы статьи
Код статьи: 288130 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

В данной статье приводится пример сценария с применением технологии ASP (Active Server Pages) для построения электронной таблицы в формате XML Spreadsheet (XMLSS) путем использования веб-компонента Электронная таблица Office, который входит в состав пакета Microsoft Office XP. Таблица в формате XMLSS может быть отображена на клиентском компьютере одним из нескольких способов:
  • как веб-компонент Электронная таблица Office на веб-странице;
  • в приложении Microsoft Excel в окне обозревателя;
  • путем открытия непосредственно в Microsoft Excel.

Дополнительная информация

Использование веб-компонента Электронная таблица Office в программном коде, исполняемом на сервере, для построения электронной таблицы обеспечивает более высокую масшатабируемость и быстродействие по сравнению с процедурой автоматизации Microsoft Excel, осуществляемой на сервере. Microsoft не рекомендует выполнять автоматизацию приложений Office, включая Excel, на сервере, и этот вариант не следует рассматривать в тех случаях, когда существуют альтернативные способы добиться тех же самых результатов. Формат XMLSS позволяет реализовать многие возможности, заложенные как в веб-компоненте Электронная таблица Office, так и в приложении Microsoft Excel; к наиболее мощным из подобных возможностей относятся поддержка рабочих книг с несколькими листами, форматирование ячеек, применение автофильтра, работа с формулами в ячейках и пересчет таблиц. Компонент Электронная таблица Office имеет объектную модель, очень близкую к объектной модели для Microsoft Excel. Следовательно, если вы знакомы с объектной моделью Excel, вы можете легко применить код, ранее разработанный вами для приложения Excel, при необходимости внося в него изменения, для использования в веб-компоненте Электронная таблица Office.

В нижеследующем примере показывается, как создать рабочую книгу с несколькими листами в формате XMLSS, используя веб-компонент Электронная таблица Office совместно с технологией ASP. В примере также обсуждается, каким образом вы можете отобразить на экране клиентского компьютера окончательную таблицу в формате XMLSS на веб-странице или в приложении Microsoft Excel.

Сценарий на языке ASP для построения таблицы в формате XMLSS путем использования веб-компонента Электронная таблица Office

Сохраните следующий 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

    'Переименование листа "Лист1" в "Заказы", листа "Лист2" в "Итого" и удаление листа "Лист3".
    Set oOrdersSheet = oSS.Worksheets(1)
    oOrdersSheet.Name = "Заказы"
    Set oTotalsSheet = oSS.Worksheets(2)
    oTotalsSheet.Name = "Итого"
    oSS.Worksheets(3).Delete
    
    '=== Построение первого рабочего листа ("Заказы") =====================================================
        
    'Добавление заголовков в ячейки A1:F1 рабочего листа "Заказы" и задание форматирования.
    Set oRange = oOrdersSheet.Range("A1:F1")
    oRange.Value = Array("Номер заказа", "ID продукта", "Количество", "Цена", "Скидка", "Итого")
    oRange.Font.Bold = True
    oRange.Interior.Color = "Silver"
    oRange.Borders(c.xlEdgeBottom).Weight = c.xlThick
    oRange.HorizontalAlignment = c.xlHAlignCenter
   
    'Задание форматирования столбцов.
    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_)"
        
    'Получение информации о заказах для заполнения пяти первых столбцов рабочего листа "Заказы"
    'и заполнение рабочего листа собранными данными, начиная со строки 2.
    Dim aOrderData
    aOrderData = GetOrderInfo
    oOrdersSheet.Range("A2:E" & NumOrders + 1).Value = aOrderData
    
    'Добавление формулы для расчета итогового заказа для каждой строки и форматирование столбца с результатом.
    oOrdersSheet.Range("F2:F" & NumOrders + 1).Formula = "=C2*D2*(1-E2)"
        oOrdersSheet.Range("F2:F" & NumOrders + 1).NumberFormat = "_(  $* #,##0.00   _)"

    'Задание границы для использованных строк.
    oOrdersSheet.UsedRange.Borders(c.xlInsideHorizontal).Weight = c.xlThin
    oOrdersSheet.UsedRange.BorderAround , c.xlThin, 15
    
    'Включение автофильтра с отображением данных, соответствующих исходному
    'критерию: значение ID продукта (столбец 2) равно 5.
    oOrdersSheet.UsedRange.AutoFilter
    oOrdersSheet.AutoFilter.Filters(2).Criteria.FilterFunction = c.ssFilterFunctionInclude
    oOrdersSheet.AutoFilter.Filters(2).Criteria.Add "5"
    oOrdersSheet.AutoFilter.Apply
    
    'Добавление промежуточного итога в конец используемого диапазона.
    oOrdersSheet.Range("F" & NumOrders + 3).Formula = "=SUBTOTAL(9, F2:F" & NumOrders + 1 & ")"
    
    'Задание настроек окна для рабочего листа "Заказы".
    oOrdersSheet.Activate   'Сделать лист "Заказы" активным.
    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
    
    '=== Построение второго рабочего листа ("Итого") =====================================================
    
    'Изменение заголовков столбцов и скрытие заголовков строк.
    oTotalsSheet.Activate
    oSS.Windows(1).ColumnHeadings(1).Caption = "ID продукта"
    oSS.Windows(1).ColumnHeadings(2).Caption = "Итого"
    oSS.Windows(1).DisplayRowHeadings = False
    
    'Добавление значений ID продуктов в столбец 1.
    Dim aProductIDs
    aProductIDs = GetProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).Value = aProductIDs
    oTotalsSheet.Range("A1:A" & NumProds).HorizontalAlignment = c.xlHAlignCenter

    'Добавление в столбец 2 формулы, вычисляющей итоги по каждому продукту на основе данных из листа "Заказы".
    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   _)"

    'Задание настроек окна для рабочего листа "Итого".
    oSS.Windows(1).ViewableRange = oTotalsSheet.UsedRange.Address
    
    '=== Настройки для окончательного представления ====================================================
    
    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 'Столбец 1 "Номер заказа"
        aOrderInfo(r, 1) = Int(Rnd() * NumProds) + 1                 'Столбец 2 "ID продукта"
        aOrderInfo(r, 2) = Int(Rnd() * 20) + 1                       'Столбец 3 "Количество"
        aOrderInfo(r, 3) = aPrice(aOrderInfo(r, 1)-1)                'Столбец 4 "Цена"
        aOrderInfo(r, 4) = aDisc(Int(Rnd() * 4))                     'Столбец 5 "Скидка"
    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 из вышеприведенного примера на веб-странице, вам нужно лишь задать свойство XMLURL для веб-компонента Электронная таблица Office применительно к URL-адресу данного ASP-документа, как показано ниже:
<html>

<body>

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1">
  <param name="XMLURL" value="http://Ваш_веб-сервер/xmlss.asp">
</object>

</body>

</html>
				
В приведенном HTML-коде свойство XMLURL задается путем использования тега <param>. При необходимости вы также можете установить свойство XMLURL в процессе выполнения кода:
   Spreadsheet1.XMLURL = "http://Ваш_веб-сервер/xmlss.asp"
				

Отображение таблицы в формате XMLSS в приложении Microsoft Excel

Таблица в формате XMLSS, созданная путем использования веб-компонента Электронная таблица Office, может быть открыта в приложении Microsoft Excel. Форматирование и возможности, которые вы внедрили в такую электронную таблицу, могут быть доступны также и в Microsoft Excel. Однако имеется несколько возможностей, которые поддерживает веб-компонент Электронная таблица Office, а Excel – не поддерживает (и наоборот); любые теги или атрибуты XML, не реализованные в Excel, игнорируются при открытии в данном приложении таблицы в формате XMLSS.

Чтобы увидеть результаты выполнения вышеприведенного сценария ASP в Microsoft Excel, осуществите следующие действия:
  1. Запустите Microsoft Excel.
  2. В меню Файл выберите пункт Открыть.
  3. В поле Имя файла введите http://Ваш_веб-сервер/xmlss.asp и затем нажмите кнопку Открыть.
Ознакомьтесь с рабочей книгой и обратите внимание на то, что данные и форматирование задавались в процессе запуска приложения и все полностью представлены в рабочей книге после ее открытия в Excel. Имеется только одно исключение: названия заголовков, созданные в веб-компоненте Электронная таблица, не переносятся в приложение Excel, поскольку это является возможностью веб-компонента Электронная таблица, которую Microsoft Excel не поддерживает. В том случае, если вы создаете таблицу в формате XMLSS с помощью веб-компонента Электронная таблица Office с целью дальнейшего открытия данного файла в Excel, воздержитесь от использования возможностей, которые не поддерживает Excel.

Другим способом открытия в Microsoft Excel ASP-таблицы в формате XMLSS является задание типа файла Excel Multipurpose Internet Mail Extensions (MIME, многоцелевые расширения почты Интернета) как значения параметра ContentType в коде сценария ASP. При использовании типа файлов Excel MIME и открытии ASP-таблицы в обозревателе Интернета, таблица в формате XMLSS может быть отображена в приложении Microsoft Excel, открывающемся внутри окна обозревателя; порядок выполнения описанной процедуры следующий:
  1. Откройте файл XMLSS.asp в каком-либо текстовом редакторе.
  2. Измените следующую строку в коде сценария:
    Response.ContentType = "text/xml"
    					
    на
    Response.ContentType = "application/vnd.ms-excel"
    					
  3. Сохраните внесенные изменения в файле XMLSS.asp и запустите обозреватель Internet Explorer (IE).
  4. Просмотрите в обозревателе файл http://Ваш_веб-сервер/XMLSS.asp. Электронная таблица XML отобразится в окне приложения Microsoft Excel, открывающемся в окне обозревателя.
(c) Корпорация Microsoft, 2001. Все права защищены. Статья подготовлена при участии Лори Б. Тёрнера, корпорация Microsoft.

Ссылки

Для получения более подробной информации обратитесь к разделу "Office Web Components" (на английском языке) веб-сайта службы технической поддержки Microsoft по следующему адресу:
http://support.microsoft.com/ofd
За дополнительной информацией обратитесь к следующим статьям Microsoft Knowledge Base:
285891 HOWTO: Use VB or ASP to Create an XML Spreadsheet For Excel 2002
278976 HOWTO: Use XSL to Transform Excel Spreadsheet XML for Server-Side Use
257757 INFO: Automation of Office for Unattended Execution is Not Recommended or Supported

Свойства

Код статьи: 288130 - Последний отзыв: 21 июля 2006 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Web Components
  • 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