|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Здравствуйте, всем! Вы уж извините за такое название )) и так собственно вопрос, есть некий экселовский документ на котором лекарственные препараты. только проблема в том что на одном ячейча содержатся данные для нескольких ячеек ), задача заключается в том что их надо правильно разбить чтоб потом в базу заносить, уважаемые посоветуйте что нибудь... ) З.Ы. то что есть это верхняя таблица а надо получить нижнюю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 15:56 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Как говорили в моей теме используйте Apache POI. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 19:18 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Музаффар, 1. Для чтения данных — Apache POI, как уже написали. 2. Прежде чем что-то разбирать (регулярками, самостоятельно написанным конечным автоматом, да хоть грамматику свою описывайте) — соберите больше примеров. Иначе вас ждёт много боли в процессе загрузки реальных данных. Например, из увиденного совершенно не ясно, как будут выглядеть данные для той же но-шпы — как одна строка «Раствор для в/в введения N5 (1x5) (ампулы), Таблетки N20 (1x20), N24 (1x24) (блистер), Таблетки N60 (1x60) (флакон с дозатором)», или как три? И не получите ли вы внезапно во входных данных что-то вроде «Лиофилизат N5 (1x5, 5 доз)» 3. Судя по тому, что в исходных данных потеряна важнейшая характеристика (дозировка), а лек.форму в результатах путают с первичной упаковкой — вас в любом случае ждёт много боли. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 20:10 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
на счет ПОИ отпадает т.к. и так это ясно ) есть вот такие: 1) НИКАПРИЛ - Капсулы 5 мг, 10 мг N10 (1x10), N20 (2x10), N30 (3x10), N40 (4x10), N50 (5x10), N7 (1x7), N14 (2x7), N21(3x7), N28 (4x7), N35 (5x7), N14 (1x14), N28 (2x14), N42 (3x14), N56 (4x14), N70 (5x14) (упаковки контурные ячейковые) 2) БОРЦА БЕЛОУСТОГО КОРНЕВИЩЕ С КОРНЯМИ - Лекарственное растительное сырьё 7 кг, 12 кг, (мешки), 40 кг (тюки) 3) ВАЛЕРИАНЫ НАСТОЙКА - Настойка 25 мл (флаконы), 20 л, 60 л (бутыли) возможно поможет регулярка но для этого походу нужен анализ данных... но это потребует больше времени хотя имхо может есть другие очевидные варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 20:18 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Музаффар, А чего отпадает? среди такого функционала это самая крутая либа. Остальные слабые ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 20:24 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Музаффар1) НИКАПРИЛ - Капсулы 5 мг, 10 мг N10 (1x10), N20 (2x10), N30 (3x10), N40 (4x10), N50 (5x10), N7 (1x7), N14 (2x7), N21(3x7), N28 (4x7), N35 (5x7), N14 (1x14), N28 (2x14), N42 (3x14), N56 (4x14), N70 (5x14) (упаковки контурные ячейковые) 2) БОРЦА БЕЛОУСТОГО КОРНЕВИЩЕ С КОРНЯМИ - Лекарственное растительное сырьё 7 кг, 12 кг, (мешки), 40 кг (тюки) Тут сразу два вопроса по формату — 1) фасовки никаприла относятся и к 5 мг, и к 10 мг, и их надо продублировать? или только к 10 мг (а что тогда с 5 мг?) 2) «12 кг, (мешки), 40 кг (тюки)» — если запятая после 12 кг не ваша, а так и написано в данных, то разница между такими данными и мусором стремительно сокращается. Бывают ли в данных сведения о количестве без разделения по упаковкам? Т.е. «N10, N20 (флакон)» вместо «N10 (1x10), N20 (2x10) (флакон)» Как выглядят строки с медицинскими изделиями (бинты, катетеры, вот это вот всё)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 20:54 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Tsyklop, отпадает потому что и так на нем и собираюсь ))) vsl , 1) да дублировать надо т.к. у них будут разные цены... 2) все из источника 3) да такие тоже есть: Порошок для приготовления раствора для приема внутрь со вкусом шиповника 5 г N10, N25, N50 (саше) 4) интересно но бинтов и катетеров там нет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 23:25 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Музаффар, как ни крути придется ручками парсить. если анализ и сделать, то будет дороже и дольше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2018, 23:42 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
больше никаких идей? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 06:50 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
Музаффарбольше никаких идей? В общем, только на регулярках я бы это делать не рискнул. Типичный человекочитаемый формат. Как раз тот случай, когда вы решаете проблему с помощью регэкспов, и теперь у вас две проблемы. - Разбить строку на токены; - классифицировать их (лек.форма, масса, количество, тип упаковки) — тут как раз можно с чистой совестью применять регэкспы; - склеить соседние при необходимости, чтобы «лекарственное растительное сырье» было одним токеном, а не тремя, и «12.5 мг» — тоже одним, а не двумя; - обработать случаи вида «Форма масса количество (упаковка1), количество (упаковка2)», приведя к нормальным «Форма масса количество (упаковка1)» и «Форма масса количество (упаковка2)» — если после упаковки есть токен, и это не лек.форма, то используем данные из предыдущего набора; - получить декартово произведение для масс и количеств. Работы на час-полтора. Основная проблема будет в обработке запятых: - с одной стороны, это разделитель — подстрока «N10,N20» (без пробела) содержит 2 разных токена; - с другой стороны, вам может встретиться лекарственная форма, в которой запятая — часть названия, и терять её нельзя (хотя фармацевты обычно пропускают запятые, даже если они нужны — «таблетки, покрытые …» пишут без запятых); - с третьей стороны, всегда надо быть готовым получить на вход и "12.5 мг", и "12,5 мг", и "0, 75мл". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 10:36 |
|
парсинг документа excel
|
|||
---|---|---|---|
#18+
vsl, ясно, спасибо! З.Ы. наверно на время оставлю этот вопрос и пусть пока оператор сам вводит нужные себя лекарственные препараты, тут просто время жмет а разобраться с этим думаю потребует больше времени чем задумался... ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2018, 11:47 |
|
|
start [/forum/topic.php?fid=59&fpage=44&tid=2121979]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 140ms |
0 / 0 |