powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java, копирование из Excel, парсинг
15 сообщений из 15, страница 1 из 1
Java, копирование из Excel, парсинг
    #39400843
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! Прошу совета, что лучше использовать или как быть дальше :)

Пользователи загружают данные из файла эксель используя сейчас Apache POI, то есть указывают файлик на своем компутере,
тот обрабатывается на сервере и создает новые объекты, в том числе и в базе данных.
Здесь неудобства заключаются в том, что пользователям нужно предварительно скопировать данные
в определенного вида шаблон, где столбцы идут в строго-заданном порядке.

Давным давно я использовал простое поле ввода, куда пользователи вставляли какую-то область строк скопированную из своего файлика. Там тоже был порядок столбцов и разделителем на строки был знак новой строк "\n".
Затем каждая строка рассматривалась как данные какого-то объекта разделенные "табами".
В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк
через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк.

Вот два варианта подбора параметров из строк экселя, которые я сейчас я использовал.
Может быть еще какие-то способы, которые бы учитывали все эти переносы и прочее и простоту работы для пользователя?
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400846
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Здесь неудобства заключаются в том, что пользователям нужно предварительно скопировать данные
в определенного вида шаблон, где столбцы идут в строго-заданном порядке."
Здесь имелось ввиду, что есть файл формата эксель, который имеет шапку и пример данных. Пользователи открывают этот шаблон,
копируют в него свои данные под шапкой, сохраняют и уже такой файл отправляют на обработку
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400879
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример данных на скриншоте, здесь по сути 2-е позиции товара, но в в первой строке есть перенос строки не там где нужно.
Не знаю как бы это распарсить так, чтобы
"Хомут КСС
3х100 "
Считалось одним параметром объекта, то есть целым названием, но пусть и будет с разделителем в конце.
При использовании Apache POI, таких проблем не возникает, ячейка читается целиком. Хотя с ранними версия вроде бы была какая-то такая проблема в нем, если не правильно помню.
Уже думал, может обязать всех после крайнего правого столбца в самом файле эксель добавить еще столбик, где будет любой набор символов, который будет означать конец работы строки, но это бред какой-то...
А вообще я вот так вот разделяю строку на отдельные строки:
Код: java
1.
List<String> parsedStrList = Arrays.asList(sampleString.split("\n"));
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400884
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите за скрин, монитор 4к, не подумал, что такой большой выйдет.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400954
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
буквально вчера. Не твоё
Локальный файл->Сервер->База данных
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400960
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicно в в первой строке есть перенос строки не там где нужно.
вы должны решить для себя и юзверей - вы парсите все все форматы или определённые?
Т.к. перенос не там где надо - это нарушение формата системы.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400974
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixic,
буквально вчера. Не твоё
Локальный файл->Сервер->База данных
Нет не мое :)
Я вот как раз сейчас обсуждаю с руководством, что будем делать с юзверами, мне удобнее, конечно через аппач все загонять, чем писать свой парсер, который еще надо обкатывать будет не раз, но им придется совершать каждый раз описанные выше действия. Ну ничего, зато в других местах будет проще.
Сейчас еще раз гляну(смотрел пару недель назад поверхностно) что там в ваадине добавили, что-то наподобие работы с данными в виде эксель таблицы, типа как гугл-док таблицы. Потому как система Vaadin использует. Но наверное не выйдет, помнится мне, что не все там так просто тоже.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39400989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
суть такая что ВСЕМ выгодно убрать Excel и вместо него сделать или десктоп или веб клиент.
Это же хлеб программистов. Сейчас даже менеджеры бегают с лаптопами-терминалами по магазину и работают с написанной ИС программистом.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401099
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixic,
суть такая что ВСЕМ выгодно убрать Excel и вместо него сделать или десктоп или веб клиент.
Это же хлеб программистов. Сейчас даже менеджеры бегают с лаптопами-терминалами по магазину и работают с написанной ИС программистом.
Согласен, от него как раз и уходят, но хотят старые данные залить в базу, а так же пока не написана часть рабочей цепочки, то ее хотят заливать вот так вот. Поясню весь процесс.
1. Исходные данные
2. Расчет данных, работа нескольких отделов над одними данными в порядке очереди
3. Получение данных из п.2 и работа пользователей над ними.
4. Печать данных на бумагу или в эксель, в общем итог всех действий выше в конечном виде.

Пункта 2 сейчас нет, технически все сделано, но физически пользователи других отделов не готовы приступить работать в системе из-за своей загруженности.

Поэтому временно, надеюсь это не постоянно, приняли решение о загрузке данных прямо из 4-го пункта, после всех расчетов, которые они пока что ведут в экселе. Получается, что будет формироваться некий реестр.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401113
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Тогда выше ответил про формат. Жёстко закрепи и подпиши какой примет система а какой нет. Выгружать они и сами могут. И формат проверить.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401212
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixic,
Тогда выше ответил про формат. Жёстко закрепи и подпиши какой примет система а какой нет. Выгружать они и сами могут. И формат проверить.
Ага, согласен, спасибо. Положу шаблон куда-то на сервер, пусть при необходимости скачивают его, ссылку в UI добавлю на него, где-нибудь рядом.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401223
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
+1
ну и возврат любой ошибки обязан вернуть отправителю. Без подробностей6
- проверил что колонок в строке не ровно 10 и райзе наверх: "Несоответствие формату вер.5.0".
Всё остальное повод руководству за бабки написать ИС.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401234
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicЗатем каждая строка рассматривалась как данные какого-то объекта разделенные "табами".
В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк
через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк.Советую воспользоваться CSV / DSV , вместо TSV .

Согласно RFC: http://www.rfc-editor.org/rfc/rfc4180.txt
Код: plaintext
1.
2.
3.
4.
5.
6.  Fields containing line breaks (CRLF), double quotes, and commas
    should be enclosed in double-quotes.  For example:

    "aaa","b CRLF
    bb","ccc" CRLF
    zzz,yyy,xxx
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401259
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman
NixicЗатем каждая строка рассматривалась как данные какого-то объекта разделенные "табами".
В этом случае возникали проблемы, потому что пользователи иногда любят внутри одной ячейки сделать несколько переносов строк
через alt+Enter. Перед загрузкой приходилось проверять, а нет ли таких строк.
Советую воспользоваться CSV / DSV , вместо TSV .

Согласно RFC: http://www.rfc-editor.org/rfc/rfc4180.txt
Код: plaintext
1.
2.
3.
4.
5.
6.  Fields containing line breaks (CRLF), double quotes, and commas
    should be enclosed in double-quotes.  For example:

    "aaa","b CRLF
    bb","ccc" CRLF
    zzz,yyy,xxx


Ну допустим, но вот пользователь, такой же как я сейчас, взял выделил строчки в екселе(несколько столбцов и строк, просто протянув выделение с зажатой ЛКМ) и вставил их в поле TextArea,
Ctrl+C и CTRL+V. Все, больше он ничего не знает и получили мы вот такой вот текст в нем:
1 ХОМУТ,КАБЕЛЬНЫЙ,JSS 2.5X100 "Хомут КСС
3х100 " 2,000 ЕД
2 ВЫКЛЮЧАТЕЛЬ АВТОМАТИЧ ВА47-100 3П 100А 0 1,000 ЕД
Строки должно быть две, а в реальности получаем 3, потому что после каждой стоит CRLF, он и в буфер так попадает и из него же так и вставляется.

В принципе, буду использовать то, что написал выше, то есть апач и пусть сами с шаблонами борются, все равно это относительно ненадолго, на полгода максимум.
...
Рейтинг: 0 / 0
Java, копирование из Excel, парсинг
    #39401261
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman..
Но за ссылки спасибо, посмотрел.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java, копирование из Excel, парсинг
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]