Excel: не удается сохранить или экспортировать данные XML. Карта XML в этой книге не экспортируется

Я столкнулся с проблемой экспорта в XML Excel. Чтобы упростить вопрос, я делаю следующие шаги:

1.Данные >> из импорта данных XML.

На самом деле, я хочу снова экспортировать его в XML-файл после некоторой модификации данных (эти переменные первой строки никогда не меняются)

2. Затем нажмите "Разработать" >> "Экспорт". Он показывает "невозможно сохранить или экспортировать данные XML. Карты XML в этой книге не экспортируются". (даже я ничего не делаю модификации по данным). Я уже смотрю несколько видеороликов по экспорту на YouTube, но, похоже, не решаю проблему. Я еще не нашел проблему.

7 ответов

Обычная причина в том, что Excel не понимает очень сложный XML.

Из office.microsoft.com:

XML-сопоставление не может быть экспортировано, если связь сопоставленного элемента с другими элементами не может быть сохранена. Эта связь не может быть сохранена по следующим причинам:

Определение схемы сопоставленного элемента содержится в последовательности со следующими атрибутами:

  • Атрибут maxoccurs не равен 1.
  • В последовательности определено более одного прямого дочернего элемента или другой композитор является прямым дочерним элементом.
  • Неповторяющиеся элементы с одним и тем же повторяющимся родительским элементом отображаются в разные таблицы XML.
  • Несколько повторяющихся элементов отображаются в одну и ту же таблицу XML, и повторение не определяется элементом-предком.
  • Дочерние элементы от разных родителей отображаются в одну и ту же таблицу XML.

Кроме того, сопоставление XML нельзя экспортировать, если оно содержит одну из следующих конструкций схемы XML:

Список списков

  • Один список предметов содержит второй список предметов.

Денормализованные данные

  • Таблица XML содержит элемент, который был определен в схеме для однократного выполнения (атрибут maxoccurs установлен в 1). Когда вы добавляете такой элемент в таблицу XML, Excel заполняет столбец таблицы несколькими экземплярами элемента.

Выбор

  • Сопоставленный элемент является частью конструкции схемы.

В моем случае я хотел экспортировать простую таблицу в виде файла xml без ранее существовавшего файла xsd или xml. Так что я сделал это

  1. Создайте файл xsd (см. пример ниже)
  2. Импортируйте этот xsd в excel
  3. Свяжите узлы в структуре xml со столбцом (см. экран ниже)
  4. Экспорт листа в виде xml-файла

Шаг 1 создайте файл xsd

Я написал следующий xsd в редакторе и сохранил его в файл

      <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Root">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="Sample_XML_Export">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Foo" type="xsd:int"/>
              <xsd:element name="Bar" type="xsd:string"/>
              <xsd:element name="Baz" type="xsd:int" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Шаг 2 Импортируйте xsd-файл

Этот файл xsd необходимо импортировать в Excel. Вам нужно активировать вкладку разработчика в Excel . На этой вкладке вы можете импортировать данные из источника XML (см. кнопку "XML...").

После импорта файла xsd вы увидите древовидную структуру (см. папкуRootи ).

Шаг 3. Сопоставьте узлы xml со столбцами

Теперь вам нужно связать узел нижеSample_XML_Exportв excel-столбец. Выберите узел и щелкните его правой кнопкой мыши, чтобы сопоставить этот узел со столбцом.

Теперь выберите столбец, который вы хотите сопоставить / связать с узлом, щелкнув заголовок столбца.

Шаг 4 сохранить как xml

В разделе «Файл» / «Сохранить как» или «Экспорт» вы можете сохранить файл xls как файл xml. Это экспортированные данные xml

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
    <Sample_XML_Export>
        <Foo>1234</Foo>
        <Bar>122</Bar>
        <Baz>12</Baz>
    </Sample_XML_Export>
    <Sample_XML_Export>
        <Foo>4567</Foo>
        <Bar>144</Bar>
        <Baz>13</Baz>
    </Sample_XML_Export>
    <Sample_XML_Export>
        <Foo>7890</Foo>
        <Bar>187</Bar>
        <Baz>14</Baz>
    </Sample_XML_Export>
</Root>

У меня была аналогичная проблема. Это был простой лист, содержащий всего 8 столбцов, но экспорт XML продолжал выдавать эту ошибку. Я обнаружил, что если порядок, в котором элементы появляются в схеме XML, не соответствует порядку, в котором столбцы появляются на листе, я получаю эту ошибку. Я изменил порядок столбцов на своем листе, чтобы они соответствовали порядку элементов в схеме, и экспорт прошел успешно.

Я видел эту ошибку, когда в схеме был закомментирован элемент XSD. Когда я удалил закомментированный элемент, он сработал как шарм.

На многих веб-страницах есть инструкции по экспорту в xml (пример: https://www.excel-easy.com/examples/xml.html). Когда я создавал схему для уже существующих данных, я натолкнулся на следующее.

  1. забыл иметь один внешний тег оболочки для строк (основная причина ошибки, которая привела меня на эту страницу)
  2. не правильно понимал типы данных (то, что выглядело как числовое, на самом деле было текстом - я думаю, больше неудобно, но сначала я исправил это).

Ваш XML, который преобразуется в схему, должен выглядеть следующим образом (я не знаю, нужны ли ему две «примерные строки», но это помогает запомнить внешний тег):

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<singleOuterWrapperTag>
    <rowTag>
        <columnA>Data Type (numeric, text)</columnA>
        <columnB>Data Type</columnB>
    </rowTag>
    <rowTag>
        <columnA>Data Type (numeric, text)</columnA>
        <columnB>Data Type</columnB>
    </rowTag>
</singleOuterWrapperTag>

у меня сработало, нужно убрать фильтр

Так что я внесу здесь свое решение. Конечно, это может быть не ваше, но тем не менее это полезная информация, и я уверен, что она кому-то поможет.

Я обнаружил, что в ситуациях, когда я импортировал экземпляр XML вместо схемы, Excel неправильно (а не то, что я намеревался) выводит схему из этого экземпляра. Это произошло потому, что запись, которую я хотел воспроизводить, имела только один экземпляр в XML, который я использовал для создания карты. (Я создаю здесь шаблон для будущего импорта, пока не пытаюсь импортировать существующие данные, поэтому у меня была только одна запись с некоторыми фиктивными данными в ней.) Я просто скопировал запись с фиктивными данными под ее первым экземпляром, чтобы там было две записи ... и все было золотым. Импорт и экспорт неожиданно заработали.

Просто на заметку для тех из вас, кто находится в той же лодке, что и я.

Другие вопросы по тегам