Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Экспорт XML - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Экспорт XML (Макросы/Sub)
Экспорт XML
GAS1979 Дата: Четверг, 12.05.2016, 10:33 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Есть исходный XML
[vba]
Код
<?xml version="1.0" encoding="utf-8"?>
<produceSchemes>

<product type="prod1" cost="100">

<scheme name="Продукт1">

<material type="prod5" attachments="3"/>

</scheme>

</product>

<product type="prod2" cost="200">

<scheme name="Продукт2">

<material type="prod5" attachments="4"/>

</scheme>

</product>

<product type="prod3" cost="300">

<scheme name="Продукт3">

<material type="prod5" attachments="5"/>

</scheme>

</product>

<product type="prod4" cost="400">

<scheme name="Продукт4">

<material type="prod5" attachments="6"/>

<material type="prod6" attachments="7"/>

</scheme>

</product>

</produceSchemes>
[/vba]
Я произвожу импорт XML в Эксель.
Подключаю карту XSD, которую сгенерил автомотически
[vba]
Код
<?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:element name="produceSchemes">
               <xs:complexType>
                     <xs:sequence>
                           <xs:element name="product" maxOccurs="unbounded">
                    <xs:complexType>
                    <xs:sequence>
                    <xs:element name="scheme">
                    <xs:complexType>
                    <xs:sequence>
                    <xs:element name="material">
                    <xs:complexType>
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                    <xs:attribute name="attachments" type="xs:int"></xs:attribute>
                    </xs:complexType>
                    </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string"></xs:attribute>
                    </xs:complexType>
                    </xs:element>
                    </xs:sequence>
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                    <xs:attribute name="cost" type="xs:int"></xs:attribute>
                    </xs:complexType>
                           </xs:element>
                     </xs:sequence>
               </xs:complexType>
         </xs:element>
   </xs:schema>
[/vba]
После делаю экспорт XML, и у меня выходит повторение продукта:
[vba]
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<produceSchemes>
    <product type="prod1" cost="100">
  <scheme name="Продукт1">
   <material type="prod5" attachments="3"/>
  </scheme>
    </product>
    <product type="prod2" cost="200">
  <scheme name="Продукт2">
   <material type="prod5" attachments="4"/>
  </scheme>
    </product>
    <product type="prod3" cost="300">
  <scheme name="Продукт3">
   <material type="prod5" attachments="5"/>
  </scheme>
    </product>
    <product type="prod4" cost="400">
  <scheme name="Продукт4">
   <material type="prod5" attachments="6"/>
  </scheme>
    </product>
    <product type="prod4" cost="400">
  <scheme name="Продукт4">
   <material type="prod6" attachments="7"/>
  </scheme>
    </product>
</produceSchemes>
[/vba]
Т.е. если вложение в продукт более 1 (например Продукт4, у него 2 материала), то происходит дублирование.
Как я понимаю, не верно настроена карта, но как ее исправить, что бы экспортированный файл был похож на исходный.
[moder]Вложите пример из трех файлов:
файл excel
xml до и после.
Без примера сложно понять что не так.[/moder]


Сообщение отредактировал SLAVICK - Четверг, 12.05.2016, 11:19
 
Ответить
СообщениеЕсть исходный XML
[vba]
Код
<?xml version="1.0" encoding="utf-8"?>
<produceSchemes>

<product type="prod1" cost="100">

<scheme name="Продукт1">

<material type="prod5" attachments="3"/>

</scheme>

</product>

<product type="prod2" cost="200">

<scheme name="Продукт2">

<material type="prod5" attachments="4"/>

</scheme>

</product>

<product type="prod3" cost="300">

<scheme name="Продукт3">

<material type="prod5" attachments="5"/>

</scheme>

</product>

<product type="prod4" cost="400">

<scheme name="Продукт4">

<material type="prod5" attachments="6"/>

<material type="prod6" attachments="7"/>

</scheme>

</product>

</produceSchemes>
[/vba]
Я произвожу импорт XML в Эксель.
Подключаю карту XSD, которую сгенерил автомотически
[vba]
Код
<?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:element name="produceSchemes">
               <xs:complexType>
                     <xs:sequence>
                           <xs:element name="product" maxOccurs="unbounded">
                    <xs:complexType>
                    <xs:sequence>
                    <xs:element name="scheme">
                    <xs:complexType>
                    <xs:sequence>
                    <xs:element name="material">
                    <xs:complexType>
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                    <xs:attribute name="attachments" type="xs:int"></xs:attribute>
                    </xs:complexType>
                    </xs:element>
                    </xs:sequence>
                    <xs:attribute name="name" type="xs:string"></xs:attribute>
                    </xs:complexType>
                    </xs:element>
                    </xs:sequence>
                    <xs:attribute name="type" type="xs:string"></xs:attribute>
                    <xs:attribute name="cost" type="xs:int"></xs:attribute>
                    </xs:complexType>
                           </xs:element>
                     </xs:sequence>
               </xs:complexType>
         </xs:element>
   </xs:schema>
[/vba]
После делаю экспорт XML, и у меня выходит повторение продукта:
[vba]
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<produceSchemes>
    <product type="prod1" cost="100">
  <scheme name="Продукт1">
   <material type="prod5" attachments="3"/>
  </scheme>
    </product>
    <product type="prod2" cost="200">
  <scheme name="Продукт2">
   <material type="prod5" attachments="4"/>
  </scheme>
    </product>
    <product type="prod3" cost="300">
  <scheme name="Продукт3">
   <material type="prod5" attachments="5"/>
  </scheme>
    </product>
    <product type="prod4" cost="400">
  <scheme name="Продукт4">
   <material type="prod5" attachments="6"/>
  </scheme>
    </product>
    <product type="prod4" cost="400">
  <scheme name="Продукт4">
   <material type="prod6" attachments="7"/>
  </scheme>
    </product>
</produceSchemes>
[/vba]
Т.е. если вложение в продукт более 1 (например Продукт4, у него 2 материала), то происходит дублирование.
Как я понимаю, не верно настроена карта, но как ее исправить, что бы экспортированный файл был похож на исходный.
[moder]Вложите пример из трех файлов:
файл excel
xml до и после.
Без примера сложно понять что не так.[/moder]

Автор - GAS1979
Дата добавления - 12.05.2016 в 10:33
mathiax90 Дата: Четверг, 12.05.2016, 11:07 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
Кодом поделитесь?


webmoney: R242692021885
ЯД:410013877261817
 
Ответить
СообщениеКодом поделитесь?

Автор - mathiax90
Дата добавления - 12.05.2016 в 11:07
GAS1979 Дата: Четверг, 12.05.2016, 11:19 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Кодом поделитесь?

Вот все файлы. Там и Исходник, и карта, и экспортированный и эксель
К сообщению приложен файл: Archive.zip(9Kb)
 
Ответить
Сообщение
Кодом поделитесь?

Вот все файлы. Там и Исходник, и карта, и экспортированный и эксель

Автор - GAS1979
Дата добавления - 12.05.2016 в 11:19
mathiax90 Дата: Четверг, 12.05.2016, 11:55 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
И ради интереса зачем вы это делаете? Внести изменения и выгрузить в XML? Или какие-то другие причины?


webmoney: R242692021885
ЯД:410013877261817
 
Ответить
СообщениеИ ради интереса зачем вы это делаете? Внести изменения и выгрузить в XML? Или какие-то другие причины?

Автор - mathiax90
Дата добавления - 12.05.2016 в 11:55
mathiax90 Дата: Четверг, 12.05.2016, 11:57 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
Двоится мне кажется потому, что дважды указывается тип материала
<material type="prod5" attachments="6" />
<material type="prod6" attachments="7" />
Т.е. программа автоматом создаёт еще одну строку продукта (которая в будующем станет элементов), потому что не может засунуть два значения материала в одну ячейку. И еще напишите как вы делаете импорт экспорт. С помощью кода или с помощью стандартных функций?


webmoney: R242692021885
ЯД:410013877261817


Сообщение отредактировал mathiax90 - Четверг, 12.05.2016, 12:01
 
Ответить
СообщениеДвоится мне кажется потому, что дважды указывается тип материала
<material type="prod5" attachments="6" />
<material type="prod6" attachments="7" />
Т.е. программа автоматом создаёт еще одну строку продукта (которая в будующем станет элементов), потому что не может засунуть два значения материала в одну ячейку. И еще напишите как вы делаете импорт экспорт. С помощью кода или с помощью стандартных функций?

Автор - mathiax90
Дата добавления - 12.05.2016 в 11:57
GAS1979 Дата: Четверг, 12.05.2016, 12:01 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Двоится мне кажется потому, что дважды указывается тип материала
<material type="prod5" attachments="6" />
<material type="prod6" attachments="7" />

Продукт может содержать от одного до нескольких десятков материалов.
В Экселе моделирование расчетных показателей и внесение изменений в калькуляцию, после выгрузка обратно в XML для загрузки в программу (она только mxl принимает)
Ручное изменение, там несколько сотен записей, которые собой.
 
Ответить
Сообщение
Двоится мне кажется потому, что дважды указывается тип материала
<material type="prod5" attachments="6" />
<material type="prod6" attachments="7" />

Продукт может содержать от одного до нескольких десятков материалов.
В Экселе моделирование расчетных показателей и внесение изменений в калькуляцию, после выгрузка обратно в XML для загрузки в программу (она только mxl принимает)
Ручное изменение, там несколько сотен записей, которые собой.

Автор - GAS1979
Дата добавления - 12.05.2016 в 12:01
GAS1979 Дата: Четверг, 12.05.2016, 12:03 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
И еще напишите как вы делаете импорт экспорт. С помощью кода или с помощью стандартных функций?

С помощью стандартных кнопок управления - "Разработчик" - "XML" - "импорт/экспорт"
 
Ответить
Сообщение
И еще напишите как вы делаете импорт экспорт. С помощью кода или с помощью стандартных функций?

С помощью стандартных кнопок управления - "Разработчик" - "XML" - "импорт/экспорт"

Автор - GAS1979
Дата добавления - 12.05.2016 в 12:03
mathiax90 Дата: Четверг, 12.05.2016, 12:05 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
Что вы думаете по моему ответу?


webmoney: R242692021885
ЯД:410013877261817
 
Ответить
СообщениеЧто вы думаете по моему ответу?

Автор - mathiax90
Дата добавления - 12.05.2016 в 12:05
GAS1979 Дата: Четверг, 12.05.2016, 12:11 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Что вы думаете по моему ответу?

Как я понимаю, он должен выгрузить как вложенный элемент:
[vba]
Код
<product type="prod4" cost="400">

  <scheme name="Продукт4">

    <material type="prod5" attachments="6"/>

    <material type="prod6" attachments="7"/>

  </scheme>

</product>
[/vba]
Т.е. Продукт4 содержит в себе материалы prod5 и prod6
 
Ответить
Сообщение
Что вы думаете по моему ответу?

Как я понимаю, он должен выгрузить как вложенный элемент:
[vba]
Код
<product type="prod4" cost="400">

  <scheme name="Продукт4">

    <material type="prod5" attachments="6"/>

    <material type="prod6" attachments="7"/>

  </scheme>

</product>
[/vba]
Т.е. Продукт4 содержит в себе материалы prod5 и prod6

Автор - GAS1979
Дата добавления - 12.05.2016 в 12:11
mathiax90 Дата: Четверг, 12.05.2016, 12:18 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
Уточните в файлах примерах какая XML для импорта, а какая XML была получена экспортом. Сообразил работаю.
Странно. У меня при импорте строка
<material type="prod6" attachments="7"/> вообще пропадает.
Т.е. получается четыре продукта всего.
При экспорте этой таблицы. Имею на выходе 4 продукта и четыре типа материала, т.е. данные пропадают.
Сейчас пытаю эту ошибку:
невозможно сохранить отношения сопоставленного элемента
Не знаю получиться что нибудь или нет.

Невозможно экспортировать карты XML в книге
Карту XML не удастся [утверждение] экспортировать, если невозможно сохранить отношения сопоставленного элемента с другими элементами. Отношение может не сохраниться по следующим причинам.
Определение схемы сопоставленного элемента содержится в последовательности со следующими атрибутами:
атрибут maxoccurs не равен 1;
Таким образом простой экспорт вам не поможет. Нужен скрипт.


webmoney: R242692021885
ЯД:410013877261817


Сообщение отредактировал mathiax90 - Четверг, 12.05.2016, 12:58
 
Ответить
СообщениеУточните в файлах примерах какая XML для импорта, а какая XML была получена экспортом. Сообразил работаю.
Странно. У меня при импорте строка
<material type="prod6" attachments="7"/> вообще пропадает.
Т.е. получается четыре продукта всего.
При экспорте этой таблицы. Имею на выходе 4 продукта и четыре типа материала, т.е. данные пропадают.
Сейчас пытаю эту ошибку:
невозможно сохранить отношения сопоставленного элемента
Не знаю получиться что нибудь или нет.

Невозможно экспортировать карты XML в книге
Карту XML не удастся [утверждение] экспортировать, если невозможно сохранить отношения сопоставленного элемента с другими элементами. Отношение может не сохраниться по следующим причинам.
Определение схемы сопоставленного элемента содержится в последовательности со следующими атрибутами:
атрибут maxoccurs не равен 1;
Таким образом простой экспорт вам не поможет. Нужен скрипт.

Автор - mathiax90
Дата добавления - 12.05.2016 в 12:18
GAS1979 Дата: Четверг, 12.05.2016, 12:53 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Не знаю получиться что нибудь или нет.

Да вот и я уже весь интернет перерыл, не могу понять, где может быть ошибка.
Может есть решение проще, через макрос?
Только как это сделать, я вообще не представляю, ни когда не пробовал макросом что либо выгружать во внешние файлы.
 
Ответить
Сообщение
Не знаю получиться что нибудь или нет.

Да вот и я уже весь интернет перерыл, не могу понять, где может быть ошибка.
Может есть решение проще, через макрос?
Только как это сделать, я вообще не представляю, ни когда не пробовал макросом что либо выгружать во внешние файлы.

Автор - GAS1979
Дата добавления - 12.05.2016 в 12:53
mathiax90 Дата: Четверг, 12.05.2016, 12:59 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 20 ±
Замечаний: 60% ±

Excel 2007
Ответ дан выше.
Думал успею до следующего поста.


webmoney: R242692021885
ЯД:410013877261817
 
Ответить
СообщениеОтвет дан выше.
Думал успею до следующего поста.

Автор - mathiax90
Дата добавления - 12.05.2016 в 12:59
doober Дата: Четверг, 12.05.2016, 14:19 | Сообщение № 13
Группа: Друзья
Ранг: Обитатель
Сообщений: 315
Репутация: 177 ±
Замечаний: 0% ±

Excel 2007
Думал успею до следующего поста.

Нет. :)
Макрос создает файл test рядом с книгой
К сообщению приложен файл: 9239493.xlsm(25Kb)


 
Ответить
Сообщение
Думал успею до следующего поста.

Нет. :)
Макрос создает файл test рядом с книгой

Автор - doober
Дата добавления - 12.05.2016 в 14:19
GAS1979 Дата: Четверг, 12.05.2016, 14:25 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Макрос создает файл test рядом с книгой

Ага, спасибо, на примере работает. Пойду разбираться в макросе.
 
Ответить
Сообщение
Макрос создает файл test рядом с книгой

Ага, спасибо, на примере работает. Пойду разбираться в макросе.

Автор - GAS1979
Дата добавления - 12.05.2016 в 14:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Экспорт XML (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!