Встроить XML в рабочий лист Excel

У меня есть файл XML, который содержит несколько вычисляемых значений вместе со списком таких элементов, как:

<?xml version="1.0" encoding="utf-8"?>
<XmlContent>
  <Elements>
    <CreationDate>...</CreationDate>
    <Filename>....</Filename>
  </Elements>
  <PersonItems>
    <PersonItem>
      <FirstName>...</FirstName>
      <LastName>...</LastName>
      <Speed>...</Speed>
    </PersonItem>
    <PersonItem>
      <FirstName>...</FirstName>
      <LastName>...</LastName>
      <Speed>...</Speed>
    </PersonItem>
    [...]
  </PersonItems>
</XmlContent>

Теперь значения должны быть представлены на листе Excel с использованием Excel 2007 OpenXmlFormat. Вычисленные значения должны быть сопоставлены с определенной ячейкой на рабочем листе, а PersonItems должны быть привязаны к таблице на том же рабочем листе.

Есть ли способ встроить файл XML в пакет рабочего листа и привязать значения к соответствующим полям с помощью API пакета С# как CustomXmlPart?

Я нашел пример на Channel9, где Мэтью Скотт сделал что-то подобное с Word 2007, используя инструментарий Word Content Control Toolkit. Однако это работает только с Word.

Есть ли что-то подобное для Excel?

Или есть еще лучший подход для решения этой задачи?


person Oliver Vogel    schedule 20.03.2013    source источник


Ответы (2)


Что ж, после исследований и экспериментов с отображением XML я пришел к выводу, что не существует «простого» способа добиться того, чего я очень хочу.

При импорте содержимого XML в приложение Excel Excel создает определение сопоставления XML и сохраняет его в пакете. Само содержимое XML будет разделено с помощью определения сопоставления и объединено с содержимым файла Excel. Это означает, что сам файл XML исчезает сразу после импорта и больше не может использоваться.

Однако преднамеренный сценарий возможен с Word 2007+, как вы можете видеть по ссылкам выше.

Может быть, эта информация будет полезна для тех, у кого есть такая же задача, как у меня.

person Oliver Vogel    schedule 21.03.2013

Самый простой способ - проанализировать файл xml (SAX, DOM), получить соответствующие атрибуты и значения, а затем записать их в файл excel.

person Joey    schedule 19.08.2016