Вверх ↑
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
#1: 2018-10-24 07:42:20 ЛС | профиль | цитата
Не могу открыть в файле первую страницу, вторая открывается без проблем. Посмотрите пожалуйста https://yadi.sk/d/vINtOu-tB1qVMw в архиве схема и файл. В Microsoft Excel этот файл нормально открывается, а в программе нет, в чем может быть ошибка?
карма: 4

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4
Рейтинг: 0
#2: 2018-10-24 14:13:32 ЛС | профиль | цитата
Архив не открывается. (7zip.exe)
карма: 0

0
Ответов: 8888
Рейтинг: 823
#3: 2018-10-24 15:32:49 ЛС | профиль | цитата
И у меня не открывается
Илья Муромец писал(а):
Тогда повторим вчерашнее!

карма: 19

0
Ответов: 537
Рейтинг: 14
#4: 2018-10-24 15:42:08 ЛС | профиль | цитата
Перезалил в zip-е https://yadi.sk/d/FlWeRMQl-lnXPA
карма: 4

0
Ответов: 8888
Рейтинг: 823
#5: 2018-10-24 20:19:59 ЛС | профиль | цитата
Sersey, но у вас в скрипте ничего нет по выбору листа Вот этот *.ехе попробуйте http://forum.hiasm.com/getfile/38492(запись заблокирована, чтобы не испортить случайно )
Проба.jpg
карма: 19

0
Ответов: 537
Рейтинг: 14
#6: 2018-10-24 21:48:41 ЛС | профиль | цитата
Нужно данные из excel файла перенести в таблицу в нормальном виде, так как отображается в Microsoft Excel, вашу схему испытывал, она три строчки нормально загружает, а потом все столбцы путает, сегодня целый день искал решение, так и не смог загрузить нормально. А за выбор страницы отвечает скрипт
index.png

Редактировалось 2 раз(а), последний 2018-10-24 21:53:12
карма: 4

0
Ответов: 8888
Рейтинг: 823
#7: 2018-10-25 00:16:18 ЛС | профиль | цитата
Sersey, а вы не забыли, что в Excel счёт с "1", а в таблице с "0", как и принято у настоящих программистов
Не путает

Add(MainForm,9161318,819,238)
{
Width=1184
Height=246
Caption="In_Out_Excel"
Point(onClose)
link(onClose,604810:doCompare,[])
}
Add(LED,1408573,868,189)
{
Left=85
Top=5
}
Add(IndexToChanel,4742625,819,196)
{
link(onEvent1,1408573:doOff,[])
link(onEvent2,1408573:doOn,[])
}
Add(Button,11796961,609,49)
{
Left=5
Top=10
Width=65
Caption="Open Excel"
link(onClick,420540:doExecute,[])
}
Add(Button,12390211,700,168)
{
Left=10
Top=40
Caption="Close"
link(onClick,13900935:doWork2,[])
}
Add(Hub,9982022,707,49)
{
link(onEvent1,10946710:doClear,[(811,55)(811,76)])
link(onEvent2,10692435:doOpen,[(732,62)(732,139)])
}
Add(ODialog,420540,658,49)
{
Filter="Excel(.xls,.xlsx)|*.xls;*.xlsx"
link(onExecute,9982022:doEvent1,[])
}
Add(ComboBox,10946710,819,63)
{
Left=120
Top=10
Width=140
Height=21
Text="Выбрать лист"
DataType=1
Point(doSelect)
link(onClick,10692435:doSheet,[(858,76)(858,125)(739,125)(739,160)])
}
Add(If_else,11782534,763,63)
{
Type=5
Op2=Integer(0)
link(onTrue,10946710:doAdd,[])
link(onFalse,10946710:doSelect,[(800,76)(800,111)])
}
Add(Button,14425351,511,231)
{
Left=10
Top=80
Caption="Read"
link(onClick,469012:doString,[])
}
Add(Edit,5305046,525,182)
{
Left=75
Top=80
Text="2"
DataType=2
}
Add(Label,4501845,525,49)
{
Left=90
Top=60
Caption="Row"
}
Add(Label,613563,567,49)
{
Left=135
Top=60
Width=39
Height=17
Caption="Column"
}
Add(Edit,16579324,567,182)
{
Left=130
Top=80
Text="1"
DataType=2
}
Add(FormatStr,469012,560,231)
{
Mask="%1;%2"
link(onFString,5820370:doWork2,[])
link(Str1,5305046:Text,[(566,222)(531,222)])
link(Str2,16579324:Text,[])
}
Add(Button,8636081,511,140)
{
Left=10
Top=110
Caption="Write"
link(onClick,1368601:doString,[])
}
Add(Edit,663925,525,91)
{
Left=75
Top=110
Text="2"
DataType=2
}
Add(Edit,10420173,567,91)
{
Left=130
Top=110
Text="1"
DataType=2
}
Add(FormatStr,1368601,560,140)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,10692435:doWrite,[])
link(Str1,663925:Text,[(566,135)(531,135)])
link(Str2,10420173:Text,[])
link(Str3,13839568:Text,[(580,131)(622,131)])
}
Add(Edit,13839568,616,91)
{
Left=190
Top=110
Width=175
}
Add(VBJScript,10692435,763,133)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doSheet|7:doMacro|7:doClose|
EventPoints=#6:onShet|7:onMacro|7:onCells|6:onOpen|
Script=#9:Dim strIn|10:Dim strOut|10:Dim NumRow|10:Dim NumCol|5:Dim i|5:Dim j|12:Dim objExcel|0:|22:Sub doWork(Data,Index)|18: Select Case Index|103: Case "doOpen" 'На вход подаётся строка, содержащая полный путь к файлу|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|82: For i=1 To objWorkbook.Sheets.Count 'Листы начинаются не с "0", а с "1"|67: sys.onShet objWorkbook.Sheets(i).Name 'Выводим имя наружу |9: Next|74: 'j=objWorkbook.macro.Count 'Узнаём количество макросов|88: ' For i=1 To j 'Нумерация начинаются не с "0", а с "1" |79: ' strIn = objWorkbook.macro(i).Name 'Узнаём имя очередного макроса |67: ' sys.onMacro strIn 'Выводим имя наружу |15: ' Next |18: sys.onShet 0 |16: sys.onOpen 1|143: Case "doRead" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|33: NumCol = CLng(Mid(strIn,i+1))|61: strOut = objExcel.ActiveSheet.Cells(NumRow, NumCol).Value|27: sys.onCells strOut |163: Case "doWrite" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;ЗаписываемоеЗначение|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|30: j = InStr(i+1,strIn,";",0)|41: NumCol = CLng(Mid(strIn, i+1, j-i-1))|28: strIn = Mid(strIn, j+1)|58: objExcel.ActiveSheet.Cells(NumRow, NumCol).Value=strIn|21: sys.onCells strIn|93: Case "doSheet" 'На вход подаётся строка, содержащая имя Листа|32: objExcel.Sheets(Data).Select|44: objExcel.ActiveSheet.Cells(1, 1).Select |95: Case "doMacro" 'На вход подаётся строка, содержащая имя Макроса|63: objExcel.Application.Run (Data) |19: 'sys.onMacro 1 |17: Case "doClose"|17: objExcel.Quit|26: Set objExcel = Nothing|20: sys.onOpen 0 |11: End Select|0:|7:End Sub|
UseName=0
link(onShet,11782534:doCompare,[(802,139)(802,118)(753,118)(753,69)])
link(onCells,3080051:doText,[])
link(onOpen,4742625:doEvent,[(807,160)(807,202)])
}
Add(Button,12318762,511,315)
{
Left=10
Top=140
Caption="Macro"
link(onClick,640997:doData,[])
}
Add(Edit,15034254,560,273)
{
Left=75
Top=140
Width=154
Text="PrintTbl"
}
Add(DoData,640997,560,315)
{
link(onEventData,10692435:doMacro,[(636,321)(636,167)])
link(Data,15034254:Text,[])
}
Add(If_else,604810,868,259)
{
Op2=Integer(1)
link(onTrue,13900935:doWork3,[(910,265)(910,301)(753,301)])
link(Op1,1408573:Value,[])
}
Add(HubEx,13900935,749,168)
{
link(onEvent,10692435:doClose,[])
}
Add(Edit,3080051,819,147)
{
Left=190
Top=80
Width=175
link(onChange,1579614:doWrite,[(858,153)(858,419)(746,419)(746,440)])
}
Add(StringTable,14567772,742,350)
{
Left=385
Top=5
Width=775
Height=195
Columns=#4:A=64|4:B=64|4:C=64|4:D=64|4:E=64|4:F=64|4:G=64|4:H=64|4:I=64|4:J=64|4:K=64|4:L=64|
Grid=0
Point(Matrix)
}
Add(Button,11823393,322,420)
{
Left=10
Top=185
Caption="Array"
link(onClick,5240383:doFor,[])
}
Add(Edit,2305431,350,364)
{
Left=85
Top=185
Text="1"
DataType=2
}
Add(Edit,13720617,392,364)
{
Left=150
Top=185
Text="62"
DataType=2
}
Add(Edit,7409237,504,371)
{
Left=250
Top=185
Text="1"
DataType=2
}
Add(Edit,1755096,546,371)
{
Left=315
Top=185
Text="12"
DataType=2
}
Add(Label,6730095,525,42)
{
Left=130
Top=170
Width=26
Height=17
Caption="Row"
}
Add(Label,2847495,560,42)
{
Left=285
Top=170
Width=39
Height=17
Caption="Column"
}
Add(Button,8434421,630,357)
{
Left=320
Top=15
Caption="Clear Tbl"
link(onClick,14567772:doClear,[])
}
Add(MatrixRW,1579614,756,427)
{
link(Matrix,14567772:Matrix,[])
link(X,15599804:Result,[(776,411)(741,411)(741,488)(580,488)])
link(Y,13218088:Result,[(783,404)(734,404)(734,481)(419,481)])
}
Add(For,5240383,371,420)
{
link(onEvent,13218088:doOperation,[])
link(Start,2305431:Text,[(377,411)(356,411)])
link(End,13720617:Text,[(384,404)(398,404)])
}
Add(For,1754058,532,427)
{
link(onEvent,15599804:doOperation,[])
link(Start,7409237:Text,[(538,418)(510,418)])
link(End,1755096:Text,[(545,411)(552,411)])
}
Add(FormatStr,13427254,630,427)
{
Mask="%1;%2"
link(onFString,5820370:doWork3,[(676,433)])
link(Str1,5240383:Position,[(636,418)(601,418)(601,474)(377,474)])
link(Str2,1754058:Position,[(643,411)(615,411)(615,467)(538,467)])
}
Add(HubEx,5820370,672,231)
{
Angle=3
link(onEvent,10692435:doRead,[(676,153)])
}
Add(Math,13218088,413,420)
{
OpType=1
Op2=1
ResultType=0
link(onResult,15129487:doEvent1,[])
}
Add(Math,15599804,574,427)
{
OpType=1
Op2=1
ResultType=0
link(onResult,13427254:doString,[])
}
Add(DoData,1569526,462,350)
{
Data=String(;;;;;;;;;;;)
link(onEventData,14567772:doAdd,[])
}
Add(Hub,15129487,462,420)
{
link(onEvent1,1569526:doData,[(487,426)(487,412)(452,412)(452,356)])
link(onEvent2,1754058:doFor,[])
}

НиРазуНеПерепутала.jpg

Редактировалось 1 раз(а), последний 2018-10-25 00:21:46
карма: 19

1
Голосовали:Sersey
Ответов: 537
Рейтинг: 14
#8: 2018-10-25 07:24:30 ЛС | профиль | цитата
Отлично. Я делал через счетчик, наверно где то ошибся. Спасибо большое.
карма: 4

0
Ответов: 233
Рейтинг: 12
#9: 2018-10-25 13:48:41 ЛС | профиль | цитата
А как сохранять без подтверждения? И можно ли создать программой пустой лист и записывать в него данные?
карма: 2

0
Ответов: 537
Рейтинг: 14
#10: 2018-10-25 13:51:04 ЛС | профиль | цитата
Мне нужно было просто получить текст с excel файла, придумал как
Add(MultiElementEx,13934300,182,105)
{
link(onCharset,4910775:doAdd,[])
}
BEGIN_SDK
Add(EditMultiEx,12817496,21,21)
{
WorkCount=#29:doEvent1=Открыть файл с сайта|
EventCount=#21:onCharset=Текст файла|
Width=608
Height=480
link(doEvent1,14191527:doEvent1,[(63,27)(63,83)])
}
Add(Hub,2425826,189,105)
{
OutCount=7
link(onEvent1,14901384:doPart,[])
link(onEvent2,15147771:doText,[(258,118)(258,132)])
link(onEvent3,11593371:doDelete,[(252,125)(252,174)])
link(onEvent4,3032635:doString,[(244,132)(244,209)])
link(onEvent5,3254602:doCharset,[(236,139)(236,244)])
link(onEvent6,15974504:doString,[(228,146)(228,216)])
link(onEvent7,15076529:doDelete,[(221,153)(221,272)])
}
Add(ZipArchiveAX,12736808,315,112)
{
Point(doExtract)
link(FileName,16275495:Var2,[])
link(OutFolder,4175370:Var3,[(328,100)(370,100)])
}
Add(VisualStrings,15147771,280,126)
{
Lines=#2:xl|
Width=18
Point(doText)
Point(onText)
link(onText,12736808:doExtract,[])
}
Add(FileTools,13730143,140,105)
{
link(onEnd,2425826:doEvent1,[])
link(FileName,13568690:GetData,[])
link(NewFileName,940804:Var1,[(153,93)])
}
Add(Hub,14191527,105,77)
{
OutCount=3
link(onEvent1,13568690:doData,[(129,83)(129,48)])
link(onEvent2,14716957:doReplace,[(200,90)(200,55)])
link(onEvent3,13730143:doCopy,[(129,97)(129,118)])
}
Add(EventFromData,13568690,140,42)
{
}
Add(Replace,14716957,210,49)
{
SubStr=".xlsx"
DestStr=".zip"
link(onReplace,6303286:doData,[])
}
Add(EventFromData,6303286,259,49)
{
}
Add(FilePart,14901384,357,105)
{
link(onPath,5530568:doData,[])
link(FileName,16275495:Var3,[(363,93)])
}
Add(EventFromData,5530568,406,105)
{
}
Add(GetDataEx,940804,259,88)
{
link(Data,6303286:GetData,[])
}
Add(GetDataEx,16275495,315,88)
{
Angle=3
link(Data,118447:Var3,[])
}
Add(FileTools,11593371,266,154)
{
DelToRecycle=1
link(FileName,118447:Var2,[])
}
Add(GetDataEx,118447,266,88)
{
Angle=3
link(Data,940804:Var3,[])
}
Add(FormatStr,3032635,364,203)
{
DataCount=1
Mask="%1xl\\sharedStrings.xml"
link(onFString,7526311:doLoad,[])
link(Str1,2236223:Var2,[])
}
Add(StrList,7526311,420,175)
{
}
Add(Charset,3254602,420,238)
{
Type=7
link(onCharset,1249816:doSearch,[])
link(Text,7526311:Text,[])
}
Add(GetDataEx,4175370,364,144)
{
Angle=1
link(Data,5530568:GetData,[(412,149)])
}
Add(DirTools,15076529,308,252)
{
NoConfirmation=1
Silent=1
link(Source,15974504:FString,[])
}
Add(FormatStr,15974504,308,210)
{
DataCount=1
Mask="%1xl"
Point(FString)
link(Str1,2236223:Var1,[(314,180)])
}
Add(GetDataEx,2236223,364,175)
{
link(Data,4175370:Var2,[])
}
Add(BlockFind,1249816,469,238)
{
IncludeBlock=1
StartBlock="<si><t>"
EndBlock="</t></si>"
link(onSearch,12817496:onCharset,[(565,244)(565,27)])
}
END_SDK
Add(ODialog,14035604,133,105)
{
link(onExecute,13934300:doEvent1,[])
}
Add(Memo,4910775,231,105)
{
Width=609
Height=532
Align=5
ScrollBars=2
}
Add(Button,10346899,84,105)
{
Left=5
Top=500
Width=45
Height=25
Caption="open"
Data=String(1;2;3;4;5;6;7;8;9)
link(onClick,14035604:doExecute,[])
}
Add(MainForm,5921302,35,105)
{
Width=629
Height=578
Caption="Пример использования Zipper"
}
Add(StrList,14246140,140,203)
{
@Hint=#7:Столбцы|
Strings=#7:<c r="A|7:<c r="B|7:<c r="C|7:<c r="D|7:<c r="E|7:<c r="F|7:<c r="G|7:<c r="H|7:<c r="I|7:<c r="J|7:<c r="K|7:<c r="L|7:<c r="M|7:<c r="N|7:<c r="O|7:<c r="P|7:<c r="Q|7:<c r="R|7:<c r="S|7:<c r="T|7:<c r="U|7:<c r="V|7:<c r="W|7:<c r="X|7:<c r="Y|7:<c r="Z|8:<c r="AA|8:<c r="AB|8:<c r="AC|8:<c r="AD|8:<c r="AE|8:<c r="AF|8:<c r="AG|8:<c r="AH|8:<c r="AI|8:<c r="AJ|8:<c r="AK|8:<c r="AL|8:<c r="AM|8:<c r="AN|8:<c r="AO|8:<c r="AP|8:<c r="AQ|8:<c r="AR|8:<c r="AS|8:<c r="AT|8:<c r="AU|8:<c r="AV|8:<c r="AW|8:<c r="AX|8:<c r="AY|8:<c r="AZ|8:<c r="BA|8:<c r="BB|8:<c r="BC|8:<c r="BD|8:<c r="BE|8:<c r="BF|8:<c r="BG|8:<c r="BH|8:<c r="BI|8:<c r="BJ|8:<c r="BK|8:<c r="BL|8:<c r="BM|8:<c r="BN|8:<c r="BO|8:<c r="BP|8:<c r="BQ|8:<c r="BR|8:<c r="BS|8:<c r="BT|8:<c r="BU|8:<c r="BV|8:<c r="BW|8:<c r="BX|8:<c r="BY|8:<c r="BZ|8:<c r="CA|8:<c r="CB|8:<c r="CC|8:<c r="CD|8:<c r="CE|8:<c r="CF|8:<c r="CG|8:<c r="CH|8:<c r="CI|8:<c r="CJ|8:<c r="CK|8:<c r="CL|8:<c r="CM|8:<c r="CN|8:<c r="CO|8:<c r="CP|8:<c r="CQ|8:<c r="CR|8:<c r="CS|8:<c r="CT|8:<c r="CU|8:<c r="CV|8:<c r="CW|8:<c r="CX|8:<c r="CY|8:<c r="CZ|8:<c r="DA|8:<c r="DB|8:<c r="DC|8:<c r="DD|8:<c r="DE|8:<c r="DF|8:<c r="DG|8:<c r="DH|8:<c r="DI|8:<c r="DJ|8:<c r="DK|8:<c r="DL|8:<c r="DM|8:<c r="DN|8:<c r="DO|8:<c r="DP|8:<c r="DQ|8:<c r="DR|8:<c r="DS|8:<c r="DT|8:<c r="DU|8:<c r="DV|8:<c r="DW|8:<c r="DX|8:<c r="DY|8:<c r="DZ|
Point(onGetString)
Point(doGetString)
AddHint(-15,-24,59,13,@Hint)
}

Компонент где то нарыл https://yadi.sk/d/cviTonftBbPJYA немного изменил, удалил появление окошка с путем к каталогу.
Пол дня потратил, чтобы сделать свою открывашку файлов .xslx, по теории все просто, в файле по пути "\xl\worksheets\sheet1.xml" хранятся колонки и индексы, а в файле по пути "\xl\sharedStrings.xml" хранится список строк в безобразном виде. Задача на первый взгляд проста, нужно все расставить по своим местам, когда запустил, то мой простой файл открывается четко, а другие, такая каша получилась. Делал так: перебираю столбцы (там файл есть) начинаю с A1 и до конца подставляю значения и если такой столбик есть, получаю индекс и добавляю запись по индексу с файла sharedStrings.xml, если нет то пустая стока. И быстро все открывалось, секунд 2

Редактировалось 3 раз(а), последний 2018-10-25 13:59:46
карма: 4

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)