Разбор и анализ таблиц Excel с помощью MS XML в TestComplete

№2-1,

технические науки

В настоящее время разбор и анализ таблиц Excel в программе TestComplete вызывает сложности при разработке тест-скриптов. Одним из вариантов решения данной проблемы может стать анализ таблиц Excel, сохраненных в XML-формате. MS Office позволяет сохранять таблицы в формате "Таблица XML". В данной статье мы рассмотрим возможность разбора и анализа таблиц в данном формате.

Похожие материалы

В настоящее время разбор и анализ таблиц Excel в программе TestComplete вызывает сложности при разработке тест-скриптов. Одним из вариантов решения данной проблемы может стать анализ таблиц Excel, сохраненных в XML-формате. MS Office позволяет сохранять таблицы в формате "Таблица XML". В данной статье мы рассмотрим возможность разбора и анализа таблиц в данном формате. Более подробную информацию о формате можно получить на сайте Microsoft. Информацию об использованных в этой статье методах и свойствах MS XML можно подчеркнуть из статьи Разбор и анализ XML-файла в TestComplete.

Создадим таблицу Excel, например, подобную этой:

Пример таблицы Excel для разбора и анализа с помощью XML

При сохранении в XML формате данная таблица будет выглядеть следующим образом:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Author>Долганов Алексей Александрович</Author>
  <LastAuthor>Долганов Алексей Александрович</LastAuthor>
  <Created>2010-07-13T09:35:04Z</Created>
  <Version>12.00</Version>
 </DocumentProperties>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>11820</WindowHeight>
  <WindowWidth>15315</WindowWidth>
  <WindowTopX>120</WindowTopX>
  <WindowTopY>45</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <NumberFormat ss:Format="#,##0.00&quot;р.&quot;"/>
  </Style>
 </Styles>
 <Worksheet ss:Name="Лист1">
  <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="3" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="15">
   <Row ss:AutoFitHeight="0">
    <Cell><Data ss:Type="String">Молоко</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">10</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell><Data ss:Type="String">Мясо</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">50</Data></Cell>
   </Row>
   <Row ss:AutoFitHeight="0">
    <Cell><Data ss:Type="String">Яблоки</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Number">20</Data></Cell>
   </Row>
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <PageSetup>
    <Header x:Margin="0.3"/>
    <Footer x:Margin="0.3"/>
    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
   </PageSetup>
   <Unsynced/>
   <Print>
    <ValidPrinterInfo/>
    <PaperSizeIndex>9</PaperSizeIndex>
    <HorizontalResolution>600</HorizontalResolution>
    <VerticalResolution>600</VerticalResolution>
   </Print>
   <Selected/>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>

Структура XML-файла начинается с корневого элемента Workbook, обозначающего книгу. Перейдем к его дочерним элементам.

  1. DocumentProperties (Свойства документа). В этом элементе не содержится никаких данных из таблицы, поэтому этот элемент мы рассматривать не будем.
  2. ExcelWorkbook (Книга Excel). Также в этом элементе не содержится важной для нас информации, поэтому также пропускаем.
  3. Styles (Стили). Содержит форматирование таблицы. Расмотрим этот элемент вкратце. Будем считать что нам важнее сами данные, чем их форматирование.
  4. Worksheet (Лист). Данных элементов может быть несколько, в зависимости от количества листов в книге. Отобрать данные элементы можно с помощью XML-метода getElementsByTagName.

WorkSheet

Обязательные параметры:

  1. ss:Name (Название листа).

Необязательные параметры:

  1. ss:Protected (Информация о защите листа)
  2. ss:RightToLeft (Направление текста)

Дочерние элементы:

  1. Table (Таблица). Данные
  2. WorksheetOptions (Настройки). Не содержит данных. рассматриваться не будет.

Table

Обязательные параметры: нет

Необязательные параметры:

  1. ss:DefaultColumnWidth (Ширина столбцов по умолчанию). Указывается в pt (1pt = 4/3px)
  2. ss:DefaultRowHeight (Высота строк по умолчанию). Указывается в pt (1pt = 4/3px)
  3. ss:ExpandedColumnCount (Общее число столбцов в этой таблице)
  4. ss:ExpandedRowCount (Общее число строк в этой таблице)
  5. ss:LeftCell (Начало таблицы слева)
  6. ss:StyleID (Стиль таблицы). Ссылается на элемент Styles (подробнее ниже)
  7. ss:TopCell (Начала таблицы сверху)

Дочерние элементы:

  1. Column (Столбцы)
  2. Row (Строки)

Column

Обязательные параметры: нет

Необязательные параметры:

  1. c:Caption (Заголовок)
  2. ss:AutoFitWidth (Автоматическая ширина столбца). Истина если содержит значение 1.
  3. ss:Hidden (Признак скрытия столбца)
  4. ss:Index (Индекс столбца)
  5. ss:Span (Количество столбцов с одинаковым форматированием)
  6. ss:StyleID (Стиль столбца)
  7. ss:Width (Ширина столбца). Указывается в pt (1pt = 4/3px)

Остановимся подробнее на параметрах ss:Index и ss:Span. Например, имеется 5 столбцов:

  1. Ширина 100pt
  2. Ширина 20pt
  3. Ширина 20pt
  4. Ширина 20pt
  5. Ширина 50pt

В XML-файле столбцы должны быть описаны следующим образом:

<column ss:width="100"/>
<column ss:span="2" ss:width="20"/>
<column ss:index="5" ss:width="50"/>

Row

Обязательные параметры: нет

Необязательные параметры:

  1. c:Caption (Заголовок)
  2. ss:AutoFitWidth (Автоматическая высота строки). Истина если содержит значение 1.
  3. ss:Height (Высота строки). Указывается в pt (1pt = 4/3px)
  4. ss:Hidden (Признак скрытия строки)
  5. ss:Index (Индекс строки)
  6. ss:Span (Количество строк с одинаковым форматированием)
  7. ss:StyleID (Стиль строки)

Дочерние элементы:

  1. Cell (Ячейка)

Cell

Обязательные параметры:

  1. ss:Type (Тип ячейки). Возможные значения:

    • Number (Числовой)
    • DateTime (Дата и время)
    • Boolean (Логический)
    • String (Строковый)
    • Error (Ошибка). Возможные значения:
      • #NULL!
      • #DIV/0!
      • #VALUE!
      • #REF!
      • #NAME?
      • #NUM!
      • #N/A
      • #CIRC!

Необязательные параметры: нет

Дочерние элементы:

  1. B (Жирным)
  2. Font (Шрифт)
  3. I (Курсив)
  4. S (Зачеркнутый)
  5. Span (Форматированный)
  6. Sub (Верхний регистр)
  7. Sup (Нижний регистр)
  8. U (Подчеркивание)

Значение элемента: Значение ячейки