|
|
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Прошу совета, что лучше использовать или как быть дальше :) Пользователи загружают данные из файла эксель используя сейчас Apache POI, то есть указывают файлик на своем компутере, тот обрабатывается на сервере и создает новые объекты, в том числе и в базе данных. Здесь неудобства заключаются в том, что пользователям нужно предварительно скопировать данные в определенного вида шаблон, где столбцы идут в строго-заданном порядке. Давным давно я использовал простое поле ввода, куда пользователи вставляли какую-то область строк скопированную из своего файлика. Там тоже был порядок столбцов и разделителем на строки был знак новой строк "\n". Затем каждая строка рассматривалась как данные какого-то объекта разделенные "табами". В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк. Вот два варианта подбора параметров из строк экселя, которые я сейчас я использовал. Может быть еще какие-то способы, которые бы учитывали все эти переносы и прочее и простоту работы для пользователя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 13:46 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
"Здесь неудобства заключаются в том, что пользователям нужно предварительно скопировать данные в определенного вида шаблон, где столбцы идут в строго-заданном порядке." Здесь имелось ввиду, что есть файл формата эксель, который имеет шапку и пример данных. Пользователи открывают этот шаблон, копируют в него свои данные под шапкой, сохраняют и уже такой файл отправляют на обработку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 13:49 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Вот пример данных на скриншоте, здесь по сути 2-е позиции товара, но в в первой строке есть перенос строки не там где нужно. Не знаю как бы это распарсить так, чтобы "Хомут КСС 3х100 " Считалось одним параметром объекта, то есть целым названием, но пусть и будет с разделителем в конце. При использовании Apache POI, таких проблем не возникает, ячейка читается целиком. Хотя с ранними версия вроде бы была какая-то такая проблема в нем, если не правильно помню. Уже думал, может обязать всех после крайнего правого столбца в самом файле эксель добавить еще столбик, где будет любой набор символов, который будет означать конец работы строки, но это бред какой-то... А вообще я вот так вот разделяю строку на отдельные строки: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 14:21 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Простите за скрин, монитор 4к, не подумал, что такой большой выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 14:23 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 14:54 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Nixicно в в первой строке есть перенос строки не там где нужно. вы должны решить для себя и юзверей - вы парсите все все форматы или определённые? Т.к. перенос не там где надо - это нарушение формата системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 14:57 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Petro123Nixic, буквально вчера. Не твоё Локальный файл->Сервер->База данных Нет не мое :) Я вот как раз сейчас обсуждаю с руководством, что будем делать с юзверами, мне удобнее, конечно через аппач все загонять, чем писать свой парсер, который еще надо обкатывать будет не раз, но им придется совершать каждый раз описанные выше действия. Ну ничего, зато в других местах будет проще. Сейчас еще раз гляну(смотрел пару недель назад поверхностно) что там в ваадине добавили, что-то наподобие работы с данными в виде эксель таблицы, типа как гугл-док таблицы. Потому как система Vaadin использует. Но наверное не выйдет, помнится мне, что не все там так просто тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 15:06 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Nixic, суть такая что ВСЕМ выгодно убрать Excel и вместо него сделать или десктоп или веб клиент. Это же хлеб программистов. Сейчас даже менеджеры бегают с лаптопами-терминалами по магазину и работают с написанной ИС программистом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 15:18 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Petro123Nixic, суть такая что ВСЕМ выгодно убрать Excel и вместо него сделать или десктоп или веб клиент. Это же хлеб программистов. Сейчас даже менеджеры бегают с лаптопами-терминалами по магазину и работают с написанной ИС программистом. Согласен, от него как раз и уходят, но хотят старые данные залить в базу, а так же пока не написана часть рабочей цепочки, то ее хотят заливать вот так вот. Поясню весь процесс. 1. Исходные данные 2. Расчет данных, работа нескольких отделов над одними данными в порядке очереди 3. Получение данных из п.2 и работа пользователей над ними. 4. Печать данных на бумагу или в эксель, в общем итог всех действий выше в конечном виде. Пункта 2 сейчас нет, технически все сделано, но физически пользователи других отделов не готовы приступить работать в системе из-за своей загруженности. Поэтому временно, надеюсь это не постоянно, приняли решение о загрузке данных прямо из 4-го пункта, после всех расчетов, которые они пока что ведут в экселе. Получается, что будет формироваться некий реестр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 16:53 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Nixic, Тогда выше ответил про формат. Жёстко закрепи и подпиши какой примет система а какой нет. Выгружать они и сами могут. И формат проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 17:05 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Petro123Nixic, Тогда выше ответил про формат. Жёстко закрепи и подпиши какой примет система а какой нет. Выгружать они и сами могут. И формат проверить. Ага, согласен, спасибо. Положу шаблон куда-то на сервер, пусть при необходимости скачивают его, ссылку в UI добавлю на него, где-нибудь рядом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 19:23 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Nixic, +1 ну и возврат любой ошибки обязан вернуть отправителю. Без подробностей6 - проверил что колонок в строке не ровно 10 и райзе наверх: "Несоответствие формату вер.5.0". Всё остальное повод руководству за бабки написать ИС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 19:42 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
NixicЗатем каждая строка рассматривалась как данные какого-то объекта разделенные "табами". В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк.Советую воспользоваться CSV / DSV , вместо TSV . Согласно RFC: http://www.rfc-editor.org/rfc/rfc4180.txt Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 20:12 |
|
||
|
Java, копирование из Excel, парсинг
|
|||
|---|---|---|---|
|
#18+
Usman NixicЗатем каждая строка рассматривалась как данные какого-то объекта разделенные "табами". В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк. Согласно RFC: http://www.rfc-editor.org/rfc/rfc4180.txt Код: plaintext 1. 2. 3. 4. 5. Ну допустим, но вот пользователь, такой же как я сейчас, взял выделил строчки в екселе(несколько столбцов и строк, просто протянув выделение с зажатой ЛКМ) и вставил их в поле TextArea, Ctrl+C и CTRL+V. Все, больше он ничего не знает и получили мы вот такой вот текст в нем: 1 ХОМУТ,КАБЕЛЬНЫЙ,JSS 2.5X100 "Хомут КСС 3х100 " 2,000 ЕД 2 ВЫКЛЮЧАТЕЛЬ АВТОМАТИЧ ВА47-100 3П 100А 0 1,000 ЕД Строки должно быть две, а в реальности получаем 3, потому что после каждой стоит CRLF, он и в буфер так попадает и из него же так и вставляется. В принципе, буду использовать то, что написал выше, то есть апач и пусть сами с шаблонами борются, все равно это относительно ненадолго, на полгода максимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 21:17 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39401099&tid=2123166]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 296ms |

| 0 / 0 |
