Что нового

Проблема с вытаскиванием данных с .xml в xls

Bingo888

Новичок
Сообщения
36
Репутация
0
Добрый вечер!
Есть много .xml с следующей структурой:

XML:
<DECLARBODY>
  <HNY>1</HNY>
  <HZ>1</HZ>
  <HZY>2019</HZY>
  <HDAY xsi:nil="true"></HDAY>
  <HMONTH xsi:nil="true"></HMONTH>
  <HDAY1 xsi:nil="true"></HDAY1>
  <HMONTH1 xsi:nil="true"></HMONTH1>
  <HNAME>ФГ "Боря"</HNAME>
  <HTIN>2122222222</HTIN>
  <HKVED>01.11</HKVED>
  <HKOPFG>110</HKOPFG>
  <HZIP>745640</HZIP>
  <HINTURB xsi:nil="true"></HINTURB>
  <HTEL xsi:nil="true"></HTEL>
  <HFAX xsi:nil="true"></HFAX>
  <HLOC></HLOC>
  <HEMAIL xsi:nil="true"></HEMAIL>
  <HSTI_COPY> </HSTI_COPY>
  <HSTI></HSTI>
  <HKOATUU>6</HKOATUU>
  <T11RXXXXG3 ROWNUM="1">45.7013</T11RXXXXG3>
  <T11RXXXXG4 ROWNUM="1">28974.91</T11RXXXXG4>
  <T11RXXXXG5 ROWNUM="1">0.95</T11RXXXXG5>
  <T11RXXXXG6 ROWNUM="1">12579.82</T11RXXXXG6>
  <T11RXXXXG7 ROWNUM="1">1257.98</T11RXXXXG7>
  <T11RXXXXG8 ROWNUM="1">1257.98</T11RXXXXG8>
  <T11RXXXXG9 ROWNUM="1">6289.91</T11RXXXXG9>
  <T11RXXXXG10 ROWNUM="1">3773.95</T11RXXXXG10>
  <R03G2>2019</R03G2>
  <R03G6>12579.82</R03G6>
  <R03G7>1257.98</R03G7>
  <R03G8>1257.98</R03G8>
  <R03G9>6289.91</R03G9>
  <R03G10>3773.95</R03G10>
  <HD1>1</HD1>
  <HD2>1</HD2>
  <HFILL>08022019</HFILL>
  <HBOS></HBOS>
  <HKBOS></HKBOS>
  <HBUH xsi:nil="true"></HBUH>
  <HKBUH xsi:nil="true"></HKBUH>
</DECLARBODY>

С этих файлов надо сформировать .xls таблицу с данными с определенных тегов .xml так чтоб данные с каждого файла были отдельной строкой в этой эксельке, все файли с разными именами одинаковое только расширение и количество символов в имени файлов. Как это реализовать? Помогите!
Попробовал набросать код без цикла покачто:

Код:
#include <Array.au3> ;подключаем
#include <Excel.au3>


$XML = FileOpenDialog('Choose XML file', '', 'XML File (*.xml)') ;открываем
$sFilePath1 = @ScriptDir & "\result1.xls"
$String = FileRead($XML) ;читаем
$RegExp = StringRegExp($String, '(?s)<HLOC>(.*?)</HLOC>', 3) ;вытягиваем

Local $aResult[4][5]
$aResult[0][0] = 'Назва'
$aResult[0][1] = 'код'
$aResult[0][2] = 'адреса'
$aResult [1][0] = $RegExp здесь почемуто нормально не отображается

$oExcel = _Excel_Open(True)
$oWorkbook = _Excel_BookNew($oExcel)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aResult)
_Excel_BookSaveAs($oWorkbook, $sFilePath1) - а эта строка должна сохранить но не сохраняет!
_Excel_BookClose($oWorkbook)
_Excel_Close($oExcel)
 
Последнее редактирование модератором:

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
здесь почемуто нормально не отображается
Потому что StringRegExp с флагом 3 возвращает массив
Код:
$aResult[1][0] = $RegExp[0]

а эта строка должна сохранить но не сохраняет!
У меня Excel 2010 нормально сохраняет. Попробуйте ещё так
Код:
_Excel_BookSaveAs($oWorkbook, $sFilePath1, $xlExcel8, True)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
 
Верх