Вы тут сильно не ругайтесь. Но захотелось немного потренироваться, и я решил сделать конвертор без применения базы данных. Те использовать метод, который напрямую связан с Excel, без всяких OLE и ODBC -- DDE. Этот метод должен работать на любой машине с любым Excel. И вот что получилось (да не обессудит меня Gunta, тк некоторые решения я тупо у него стырил  )  Схема Add(MainForm,4844206,161,161) { Left=20 Top=105 Width=450 Height=437 MarginLeft=5 MarginTop=5 MarginRight=5 MarginBottom=5 Caption="Работа с Excel" Position=1 Point(Handle) link(onCreate,6027587:doPopup,[(200,181)(200,258)(151,258)(151,230)]) } Add(DDEClient,12344087,644,210) { ServiceName="EXCEL" AutoUpdate=1 Point(doExecute) Point(onError) Point(onExecute) Point(doTopicName) link(onOpenLink,4210895:doWork1,[(683,216)(683,111)(214,111)(214,125)]) link(onGetItem,15181236:doInputEvent,[]) } Add(For,8369739,245,217) { Start=1 End=100 link(onEvent,5561371:doString,[]) link(onStop,15621989:doEvent1,[(298,230)(298,300)]) } Add(FormatStr,5561371,308,217) { DataCount=1 Mask="R1C%1" link(onFString,12512474:doEvent1,[]) } Add(MTStrTbl,5816951,161,119) { Top=50 Width=434 Height=348 Align=5 Name="excel" } Add(MST_Clear,4101504,644,259) { ClearAll=0 MSTControl="excel" } Add(Hub,16613303,595,245) { OutCount=4 link(onEvent1,12344087:doTopicName,[]) link(onEvent2,12344087:doOpenLink,[(620,258)(620,216)]) link(onEvent3,4101504:doClear,[]) link(onEvent4,8369739:doFor,[(631,272)(631,321)(235,321)(235,223)]) } Add(MST_ColAction,10034592,987,210) { MSTControl="excel" } Add(ChanelSwitch,15181236,721,210) { link(onOutEvent1,8059813:doTrim,[]) link(onOutEvent2,2966136:doTrim,[(760,223)(760,342)]) } Add(Hub,12512474,364,217) { link(onEvent1,15181236:doSwitchToChanel1,[(501,223)(501,178)(700,178)(700,216)]) link(onEvent2,15600924:doWork2,[]) } Add(For,7961195,371,357) { @Hint=#1:Y| Start=2 End=100 link(onEvent,86887:doFor,[]) link(onStop,13362148:doEvent1,[(410,370)(410,573)]) AddHint(35,-31,22,13,@Hint) } Add(Hub,15621989,315,294) { link(onEvent1,15181236:doSwitchToChanel2,[(683,300)(683,223)]) link(onEvent2,7961195:doFor,[(343,307)(343,363)]) } Add(FormatStr,8261114,490,357) { Mask="R%1C%2" link(onFString,15600924:doWork3,[(543,363)]) link(Str1,7961195:Position,[(496,348)(482,348)(482,397)(377,397)]) } Add(For,86887,427,357) { @Hint=#1:X| Start=1 End=100 link(onEvent,8261114:doString,[]) link(onStop,7769877:doAdd,[(466,370)(466,405)]) AddHint(35,-31,22,13,@Hint) } Add(HubEx,15600924,539,224) { link(onEvent,12344087:doGetItem,[]) } Add(MT_Add,3542868,938,336) { InputMT=1 link(onAdd,295797:doValue,[(977,342)(977,258)(928,258)(928,272)]) link(Data,5485813:Var2,[]) } Add(MT_Memory,295797,938,266) { } Add(MT_Add,7769877,763,399) { InputMT=2 link(onAdd,6345748:doEvent1,[]) link(Data,5485813:Var1,[(769,313)]) } Add(GetDataEx,5485813,938,308) { link(Data,295797:Value,[]) } Add(MST_RowAction,4339442,1239,399) { MSTControl="excel" } Add(Hub,6345748,903,399) { OutCount=3 link(onEvent1,10866116:doSeparateMT,[]) link(onEvent2,8860620:doSeparateMT,[(970,412)(970,454)]) link(onEvent3,295797:doClear,[(928,419)(928,279)]) } Add(Trim,2966136,784,336) { Char=" " link(onTrim,5624993:doTrim,[]) } Add(Case,9554756,938,210) { Value=String() link(onNextCase,10034592:doColAction,[]) } Add(Trim,6912231,833,210) { Char="\n" link(onTrim,12911157:doTrim,[]) } Add(Trim,8059813,784,210) { Char="\r\n" link(onTrim,6912231:doTrim,[]) } Add(Trim,12911157,882,210) { Char="\r" link(onTrim,9554756:doCase,[]) } Add(MT_MultiData,10866116,980,399) { From=5 Count=1 link(onData1,7045169:doCompare,[]) } Add(Case,12388025,1141,399) { Value=String() link(onNextCase,6476696:doAdd,[]) } Add(MT_Add,6476696,1190,399) { InputMT=2 link(onAdd,4339442:doRowAction,[]) link(Data,5485813:Var3,[(1196,313)]) } Add(StrMask,7045169,1036,399) { Mask="Распрод*" link(onFalse,708575:doSwitchToChanel1,[]) link(onTrue,708575:doSwitchToChanel2,[]) } Add(ChanelSwitch,708575,1092,399) { link(onOutEvent1,12388025:doCase,[]) } Add(MT_MultiData,8860620,980,448) { Count=1 link(onData1,708575:doInputEvent,[(1075,454)(1075,419)]) } Add(FormatStr,236393,588,581) { DataCount=42 Mask="<Товар Группа="%1" Вид="%2" Производитель="%4" НН="%5" Партномер="%7" Название="%8" НазваниеРус="%3" Статус="" Цена="%9" Валюта="%10" ПроцентКонв="call" Вес="%34" Объем="%35" Ширина="%36" Высота="%37" Глубина="%38" ЕдИзм="%32">\r\n<Склад Место="ЦО" Количество="%12">\r\n<Склад Место="ЦО(Москва)" Количество="%15"/>\r\n</Склад>" link(onFString,477419:doWork2,[]) } Add(MST_ArrayRows,12784195,532,525) { MSTControl="excel" } Add(MT_MTArrayEnum,8507433,532,581) { link(onItem,236393:doString,[]) link(Array,12784195:Strings,[]) } Add(Hub,13362148,441,567) { OutCount=6 link(onEvent1,8648615:doClear,[(970,573)(970,594)]) link(onEvent2,15108078:doString,[(494,580)(494,517)]) link(onEvent3,8507433:doEnum,[]) link(onEvent4,13275218:doPart,[(505,594)(505,664)]) link(onEvent5,6405071:doString,[(490,601)(490,720)]) } Add(FormatStr,15108078,588,511) { Mask="<Сток Дата="%1">" link(onFString,477419:doWork1,[(907,517)]) link(Str1,4815497:FormatTime,[]) } Add(Time,4815497,588,462) { Format="D:M:Y h:m:s" } Add(Charset,3130587,931,581) { Type=6 link(onCharset,8648615:doAdd,[]) } Add(HubEx,477419,903,581) { link(onEvent,3130587:doCharset,[]) } Add(FilePartElm,13275218,700,658) { Mode=6 link(onPart,16233257:doStrCat,[]) link(FileName,4210895:Var1,[(706,649)(230,649)]) } Add(StrCat,16233257,756,658) { Str2=".xml" link(onStrCat,8648615:doSave,[(970,664)(970,615)]) } Add(Message,14276668,812,714) { } Add(FormatStr,6405071,756,714) { Mask="Создан файл - %1" link(onFString,14276668:doMessage,[]) link(Str1,16233257:Result,[]) } Add(StrList,8648615,1008,581) { Point(doSave) } Add(Trim,5624993,833,336) { Char="\n" link(onTrim,13656227:doTrim,[]) } Add(Trim,13656227,882,336) { Char="\r" link(onTrim,3542868:doAdd,[]) } Add(ChildPanel,4210895,224,119) { link(onEvent1,16613303:doEvent1,[(550,125)(550,251)]) } BEGIN_SDK Add(EditMulti,6163233,21,21) { EventCount=1 WorkCount=1 VarCount=1 Width=412 Height=214 link(doWork1,3708702:doChangeValue,[(39,27)(39,34)]) link(Var1,2588770:Value,[(27,145)(300,145)]) } Add(Panel,8574939,119,28) { Width=434 Align=2 Ctl3D=0 WinStyle=1 BorderWidth=0 BevelWidth=0 BevelInner=0 } Add(Button,11312604,119,77) { Left=10 Top=10 TabOrder=-1 Caption="Open" Point(doCaption) link(onClick,7406706:doExecute,[]) } Add(Edit,621552,294,42) { Left=70 Top=11 Width=325 WinStyle=2 Text="" } Add(ODialog,7406706,175,77) { link(onExecute,14842716:doEvent1,[]) } Add(Hub,14842716,224,77) { OutCount=3 link(onEvent1,621552:doText2,[(250,83)(250,55)]) link(onEvent2,2588770:doValue,[]) link(onEvent3,4017987:doShellExec,[(277,97)(277,167)]) } Add(FilePartElm,14509320,343,84) { Point(Part) } Add(WinExec,4017987,287,154) { link(onExec,10306272:doString,[]) } Add(FormatStr,10306272,343,154) { DataCount=1 Mask="[%1]Лист1" link(onFString,6163233:onEvent1,[(382,160)(382,27)]) link(Str1,14509320:Part,[]) } Add(Memory,2588770,294,84) { link(onData,14509320:doPart,[]) } Add(LED,3708702,49,28) { Left=400 Top=10 Width=20 Height=20 Ctl3D=0 WinStyle=1 Shape=1 ColorBlick=255 } END_SDK Add(WinTools,6027587,161,217) { link(Handle,4844206:Handle,[]) }
|