Вверх ↑
Этот топик читают: Гость
Ответов: 294
Рейтинг: 64
#1: 2011-03-15 00:35:19 ЛС | профиль | цитата
Приветствую!
Есть Exel-файл (формат 97), требуется прочитать в HiAsm данные из 4 полей:
ProdNameWithParams (название продукта)
OrdDisplayOrderNumb (номер заказа)
OrdPersonFax (номер факса)
OrdPersonEMail (E-mail)

Ранее не приходилось сталкиваться с подобным, покурив примеры добился вывода 3 параметров из 4 необходимых "OrdDisplayOrderNum" читать почему-то не хочет.
Соответственно главная просьба - подсказать как считать номер заказа.

Плюс ко всему я считывал данные такой строкой:
SELECT * FROM `111`.`Лист2$`
и получая данные, далее искал нужное с помощью BlockFind, что по-моему неправильно... но как считывать только нужные поля пока не понял.
Буду весьма благодарен за подсказку.

В архиве (10кб) сам екселевский файл и схема *.sha, с тем, чего мне удалось добиться.
http://forum.hiasm.com/forum_serv.php?q=56&id=2187
карма: 0

0
Ответов: 1891
Рейтинг: 110
#2: 2011-03-15 01:50:38 ЛС | профиль | цитата
Quest, приложенный Вами файл XLS не является базай данных, так что возможно, что не все данные попадут в результат запроса

Из тех данных, что подадают в запрос можно выбрать так:

ИЗДЕЛИЕ:

SELECT F7 FROM `111`.`Лист2$` WHERE `Паспорт изделия` = 'Изделие'

Заказ №:

не выводится, попробуй поэкспериментируй с форматированием, т.к. номер заказ не попадает в выводимую таблицу

ФАКС:

SELECT F21 FROM `111`.`Лист2$` WHERE F18='Факс.'

E-Mail:

SELECT F39 FROM `111`.`Лист2$` WHERE F33 = 'E-Mail'

карма: 0
%time%
1
Голосовали:Quest
Ответов: 294
Рейтинг: 64
#3: 2011-03-15 02:10:49 ЛС | профиль | цитата
Alexbootch, спасибо.
К сожалению все равно не понял откуда берутся значения (F7, F21 и т. д.), но может на старости лет и дойдет.
Метод:
SELECT F21 FROM `111`.`Лист2$` WHERE F18='Факс.' "цепляет" после номера еще ".0" как и при общей выборке (SELECT * FROM `111`.`Лист2$`), придется дополнительно отсекать, но не проблема.

А вот с номером заказа - конечно хреново, что не вытаскивает...
Alexbootch писал(а):
не выводится, попробуй поэкспериментируй с форматированием

Файлы генерирует программа к которой у меня нет доступа (в плане изменить что-либо в формировании *.xls)
Или имеется ввиду действия с уже готовым файлом?

----
Или может есть принципиально иной способ прочитать таки этот номер заказа?

карма: 0

0
Ответов: 1891
Рейтинг: 110
#4: 2011-03-15 02:23:40 ЛС | профиль | цитата
Quest писал(а):
К сожалению все равно не понял откуда берутся значения (F7, F21 и т. д.), но может на старости лет и дойдет.


Загрузи результат запроса SELECT * FROM `111`.`Лист2$` в таблицу и все сам увидишь.

Quest писал(а):
Файлы генерирует программа к которой у меня нет доступа (в плане изменить что-либо в формировании *.xls)
Или имеется ввиду действия с уже готовым файлом?


А зачем именно таким способом нужно доставать данные из файла, не являющегося базой данных? Не проще использовать скрипты, например VBA?
карма: 0
%time%
0
Ответов: 294
Рейтинг: 64
#5: 2011-03-15 02:35:58 ЛС | профиль | цитата
Alexbootch писал(а):
Загрузи результат запроса в таблицу и все сам увидишь

Узрел, спасибо.
Alexbootch писал(а):
Не проще использовать скрипты, например VBA?

К сожалению и в этом не силен, так что лично для меня пожалуй что не проще.
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#6: 2011-03-15 02:45:39 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 09:33:38
карма: 0

0
Ответов: 294
Рейтинг: 64
#7: 2011-03-15 03:08:30 ЛС | профиль | цитата
z20-14.opera-mini.net писал(а):
111.xls открывается в WinRAR

Похоже побочный эффект от пересохранения в 2007-ом Exel-е, хотя и под старую версию.
Внимательно изучив содержимое "архива" не нашел ничего похожего на искомую информацию.
Но даже если бы и нашел - не вариант, оригинальный файл не "разархивируется".
Прикладываю оригинал (5кб) (в нем отсутствуют интересующие поля, кроме наименования, поэтому в первом посте пересохраненный файл для наглядности).

http://forum.hiasm.com/forum_serv.php?q=56&id=2188
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#8: 2011-03-15 03:12:08 ЛС | профиль | цитата
Quest, файлы xls старой версии -- это структуированное хранилище



Add(MainForm,4636594,140,266)
{
Width=690
Height=430
}
Add(TreeViewTrain,4303500,322,210)
{
Width=311
Height=392
Align=1
Font=[Arial,8,1,0,204]
WinStyle=2
Name="stgtree"
Layout="grid"
HeightScale=100
ModeSp=3
SizeSp=2
Tooltips=0
IconsManager="icons"
DragDrop=0
CaptionIndex=3
IDIndex=1
IconIndex=2
Numeric=0
Point(NextID)
Point(doExpand)
Point(onDrop)
Point(DropAccept)
Point(onMouseDown)
Point(onDblClick)
Point(doCollapse)
Point(Handle)
Point(doExpandNode)
Point(doSort)
Point(onKeyDown)
Point(doExpandToggle)
link(onClick,6728012:doSeparateMT,[])
}
Add(SStorage_DS,6540375,182,210)
{
Name="sstg"
Point(onError)
link(onOpenStorage,634141:doEvent1,[])
}
Add(STG_Enumerator,6644416,322,266)
{
SStorage_DS="sstg"
Point(onEndEnumAll)
link(onEnumAllElements,10415196:doAddNode,[])
}
Add(TVT_AddNode,10415196,364,266)
{
TreeView="stgtree"
}
Add(Hub,634141,231,210)
{
OutCount=3
link(onEvent1,4303500:doClear,[])
link(onEvent2,6644416:doEnumAllElements,[(259,223)(259,272)])
link(onEvent3,14789619:doData,[(255,230)(255,237)])
}
Add(Button,13267466,98,210)
{
Left=435
Top=365
Width=120
TabOrder=-1
Layout="grid"
Caption="Load"
link(onClick,16479320:doExecute,[])
}
Add(ODialog,16479320,140,210)
{
Filter="Файлы Excel (*.xls)|*.xls"
Title="Диалог выбора"
FileName=""
link(onExecute,6540375:doOpenStorage,[])
}
Add(MT_MultiData,6728012,364,210)
{
From=1
Count=1
link(onData1,2102961:doItemPath,[])
}
Add(TVT_ItemPath,2102961,406,210)
{
TreeView="stgtree"
link(onItemPath,346256:doExtractFileFrom,[])
}
Add(STG_ExtractFileFrom,346256,448,210)
{
SStorage_DS="sstg"
link(onExtractFileFrom,5132769:doConvert,[])
}
Add(Memo,740361,532,189)
{
Left=315
Width=355
Height=360
Layout="grid"
WidthScale=100
ScrollBars=2
}
Add(DoData,14789619,266,231)
{
Data=Integer(1)
link(onEventData,4303500:doExpandNode,[])
}
Add(Stream2Hex,5132769,490,210)
{
Mode=4
link(onResult,740361:doText,[])
}

карма: 22

0
Ответов: 294
Рейтинг: 64
#9: 2011-03-15 03:38:09 ЛС | профиль | цитата
nesco писал(а):
...это структуированное хранилище

Век живи - век учись...
Но, черт меня подери, не визуально, не экпортировав в *.txt и поиском - я не нашел информации из полей. (добавлял UTF8>Ansi для кириллицы, но тишина)

----
может это неправильные пчелы и они делают неправильные xls..))
В том смысле что конкретный файл "криво сделан"?
Читаются же 3 поля, а вот номер - ни в какую..
карма: 0

0
Ответов: 8930
Рейтинг: 823
#10: 2011-03-15 10:07:34 ЛС | профиль | цитата
Quest, целая куча примеров на форуме, вот один из них:
карма: 19

0
файлы: 1shop.sha [5KB] [164]
Ответов: 1891
Рейтинг: 110
#11: 2011-03-15 14:33:46 ЛС | профиль | цитата
Quest, вот более простой пример для начального понимания:

code_22973.txt
карма: 0
%time%
0
файлы: 1code_22973.txt [1.9KB] [207]
Ответов: 294
Рейтинг: 64
#12: 2011-03-15 18:25:10 ЛС | профиль | цитата
Леонид писал(а):
Quest, целая куча примеров на форуме

Я конечно пробовал искать, читать кучу страниц... но как видно из моих сообщений выше я ТУПО неправильно писал: Exel вместо Excel ))
Наверное поэтому у меня и возникли проблемы с поиском нужного).
Так что спасибо, за пример!

Alexbootch писал(а):
Quest, вот более простой пример для начального понимания

Alexbootch
Тоже огромное спасибо!

Ситуация усугублялась тем, что для работы скриптов необходим установленный в системе Excel, коего у меня нет, поставил на виртуалку для проверки. А по примеру из первого поста работает без Excel_я.

Плюс, пока искалось решение, разработчик программы генерирующей отчеты сжалился и согласился выгружать поля в *.txt.
Но все-равно спасибо всем откликнувшемся - подчерпнул для себя много полезного!
[flood]Из-за лимита "оплюсовать" всех не могу[/flood]

карма: 0

0
Ответов: 8930
Рейтинг: 823
#13: 2011-03-15 20:26:23 ЛС | профиль | цитата
Quest, такое использование таблиц Excel "разработчика" не украшает, хотя и распространено в финансовых кругах. Word тоже открывает такие файлы, но для него нужно более кропотливо и точно устанавливать всякие границы, года три-четыре назад тоже пришлось делать расшифровку этих "портянок" -- в HiAsm-е открывал как текст и парсил нужные данные.
карма: 19

0
Ответов: 1891
Рейтинг: 110
#14: 2011-03-15 20:53:25 ЛС | профиль | цитата
Леонид писал(а):
Quest, такое использование таблиц Excel "разработчика" не украшает, хотя и распространено в финансовых кругах. Word тоже открывает такие файлы, но для него нужно более кропотливо и точно устанавливать всякие границы, года три-четыре назад тоже пришлось делать расшифровку этих "портянок" -- в HiAsm-е открывал как текст и парсил нужные данные.


Самый оптимальный вариант - это использовать для составления отчетов файлы формата RTF, их можно парсить как текстовый файл и возможностей у данного формата для отчетов за глаза. Использовать VBA тоже можно, но в отличии от формата RTF, не кто не ручается за обратную совместимость в разных версиях Excel.
карма: 0
%time%
0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)