Спасибо! Это если на рабочем месте есть Ёксель. У многих Либре
оффис. Там это не работает. Я давно не использую шаблоны
СофтМастерс - они только для связи с Микрософт Ексель через ОЛЕ.
--
С уважением,
Анатолий mailto:anatoli.d...@asb.by --
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/16302882.20230202171037%40asb.by.
Здравствуйте, Чаплыгин В.Г.
Как известно, файл .xlsx (в отличие от старого .xls) - это ZIP-архив, набитый всякими XML-файлами.
В частности, данные по закладкам находятся в файлах подпапки /xl/worksheets и имеют имена sheet1.xml,
sheet2.xml и т.д. - по числу закладок.
Если хорошо покопаться в этих файлах (особенно, точно зная их стуктуру), вытащив их из XSLS-архива,
то можно прочитать нужные данные.
Вы писали 2 февраля 2023 г., 19:06:33:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/7c67fa69-e422-f2a5-64c0-fc7b4ec09218%40yandex.ru.
Спасибо! Это если на рабочем месте есть Ёксель. У многих Либре оффис. Там это не работает. Я давно не использую шаблоны СофтМастерс - они только для связи с Микрософт Ексель через ОЛЕ. Нужна тузла для чтения файлика без Екселя. 02.02.2023 17:10, 'Анатолий Долидович' via ClaList пишет: |
|
|
|
|
|
|
-- С уважением Чаплыгин Вадим Геннадьевич мой адрес chapli...@yandex.ru мой сайт в интернете chapligin34.ru -- Вы получили это сообщение, поскольку подписаны на группу "ClaList". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com. Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/7c67fa69-e422-f2a5-64c0-fc7b4ec09218%40yandex.ru. |
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/7c67fa69-e422-f2a5-64c0-fc7b4ec09218%40yandex.ru.
Сегодня разобрался. Если кому нужно. Мне нужно было прочитать из екселя. Входящий ексель две страницы - на первой вопросы, а для ответов нужны номера со второй страницы. Приходилось сохранять в CSV формат сначала первую ,а затем, вторую страницу. И читать из CVS сначала вторую , а затем, первую страницу. Неудобно.
Мой решение. Ексель файлик копируем в папку с программой в
короткое имя.
glo:filespec2 = USZN1_DBF
copy(ZAPROT,'ex2das.xlsx') ! glo:filespec2 имя файла ZAPROT
содержит
файл распаковывается в папку, для надёжности папка сначала
удаляется
run('cmd.exe /c rd ex2dd /s /q' , 1)
затем распаковка
run('7z.exe x ex2das.xlsx -oex2dd' , 1)
страница действительно ex2dd/xl/worksheets/sheet2.xml
Файлик текстовый, ТОЛЬКО разделитель строк не 0Dh 0Ah , а 0Ah. Из-за этого читать драйвером ASCII бесполезно! Драйвер видит только одну строку.
Читать надо драйвером DOS
ido FILE,DRIVER('DOS'),NAME(gludbfname),PRE(ido)
record RECORD
a BYTE
END
END
gludbfname ='ex2dd/xl/worksheets/sheet2.xml '
free(loqu_questr) ! очередь из sheet2.xml
lo_pointers =0
CheckOpen(ido, 1)
set(ido)
loop
next(ido)
if ErrorCode()~ = 0 then
if lo_pointers > 0
loqu_:qu_stroka = lo_po_string
add(loqu_questr)
lo_po_string = ''
lo_pointers =0
.
break
.
lo_byte_byte = ido:a
if lo_byte_byte = 10 ! 0Ah разделитель
loqu_:qu_stroka = lo_po_string
add(loqu_questr)
lo_po_string = ''
lo_pointers =0
ELSE
lo_pointers +=1
lo_po_string[lo_pointers ] = lo_byte_str
.
. ! loop next(ido)
CLOSE(ido)
Теперь строки разделены и загружены в очередь. lo_byte_byte это
байт поверх lo_byte_str строка из 1 буквы.
Это строка для обработки
<c r="A3"
t="inlineStr"><is><t>000dbd80-eec2-11ed-9157-e704a7acd01d</t></is></c><c
r="B3"
t="inlineStr"><is><t>0520235717356</t></is></c><c
r="C3"
t="inlineStr"><is><t></t></is></c><c
r="D3"></c><c r="E3"></c><c
r="F3"></c><c r="G3"></c><c
r="H3"></c><c r="I3"></c><c
r="J3"></c><c r="K3"
t="inlineStr"><is><t></t></is></c></row>
<c r="A4"
t="inlineStr"><is><t>0118c1b0-eebe-11ed-98d4-6dc2f540d672</t></is></c><c
r="B4"
t="inlineStr"><is><t>0520235628331</t></is></c><c
r="C4"
t="inlineStr"><is><t></t></is></c><c
r="D4"></c><c r="E4"></c><c
r="F4"></c><c r="G4"></c><c
r="H4"></c><c r="I4"></c><c
r="J4"></c><c r="K4"
t="inlineStr"><is><t></t></is></c></row>
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1074253410.20230203020344%40mail.ru.
|
Спасибо! Не знал! Правда вопрос уже решён. Я обычно с обычными текстовыми файликами работаю. Да и самый последний символ в xml файлике без конца строки. Последний символ </worksheet> и всё. Нет 0Dh 0Ah и нет 0Ah.
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/1409685742.20230516205434%40mail.ru.
Спасибо! Не знал! Правда вопрос уже решён. Я обычно с обычными текстовыми файликами работаю. Да и самый последний символ в xml файлике без конца строки. Последний символ </worksheet> и всё. Нет 0Dh 0Ah и нет 0Ah. 16.05.2023 20:54, 'Олег А. Руденко' via ClaList пишет: |
|
Есть засада! Если файлик из ГИС ЖКХ с портала открыть Екселем и сохранить в новое место (сохранить как) то в sheet2.xml строки без данных! Программа находит пустоту и выдаёт пустой ответ. После открытия Ексельного файла с ответом не может удалить временную папку с распакованным ексель файлом и висит. Если дать программе Оригинальный файл с портала всё работает!
Та же засада и Либре офисом! Нельзя открывать и сохранять!
Сегодня разобрался. Если кому нужно. Мне нужно было прочитать из екселя. Входящий ексель две страницы - на первой вопросы, а для ответов нужны номера со второй страницы. Приходилось сохранять в CSV формат сначала первую ,а затем, вторую страницу. И читать из CVS сначала вторую , а затем, первую страницу. Неудобно.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/7598cbb9-57cc-8343-93cc-179eca736f6b%40yandex.ru.
в sheet2.xml получается ДВЕ строки после сохранения офисом.
первая <?xml version="1.0" encoding="UTF-8"?>
И ВСЁ остальное во второй строке. При открытии в Екплорере теги
видны, но вместо данных только ссылки
-<row r="3" outlineLevel="0" hidden="false" collapsed="false"
customHeight="false" ht="14.4" customFormat="false">
-<c r="A3" t="s" s="5">
<v>332</v>
</c>
-<c r="B3" t="s" s="5">
<v>14</v>
</c>
</row>
-<row r="4" outlineLevel="0" hidden="false" collapsed="false"
customHeight="false" ht="14.4" customFormat="false">
-<c r="A4" t="s" s="5">
<v>333</v>
</c>
-<c r="B4" t="s" s="5">
<v>27</v>
</c>
</row>
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/45e14741-cdc6-ed20-6ea9-1fba3ced979e%40yandex.ru.