powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Excel -> CSV программно
46 сообщений из 46, показаны все 2 страниц
Excel -> CSV программно
    #39118693
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!

Создаю стотысячную тему на тему преобразования XLS в CSV, т.к. в предыдущих ответа не нашла.
Написала красивую и хорошую процедуру загрузки данных из CSV в таблицы Оракла, которая запускается из Апекса, за основу брала вот этот пример: http://avdeo.com/2008/05/21/uploading-excel-sheet-using-oracle-application-express-apex/ В коде твердо зашит разделитель, использующийся в csv.
Все хорошо, но файлы будут загружаться пользователями. Можно, конечно, попросить их конвертировать xls в csv, но настройки разделителя у всех свои.

- Можно ли как-то вытащить эти настройки в Апексе, чтобы передавать в процедуру как параметр?
- Можно ли как-то вытащить данные из сохраненного в blob файла xls?
- Как и на чем написать утилитку, которая будет при загрузке файла преобразовывать его в csv с заданным разделителем? И как ее запустить из Апекса?

Мне наиболее вероятным кажется последний вариант. Возможно, есть еще какие-то выходы? Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118715
Vladml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парсить ХLS задача не тривиальная :)

У меня (правда не на APEX) хорошо зарекомендовал себя способ копирования и вставки из буфера обмена. Excel делает разделитель между колонками, символ табуляции кажется, остальное дело техники.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118719
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,
только CSV либо Java.
Первое загоняйте в таблу и парсите там как угодно
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118904
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для пользователей более понятен загрузчик через стандартный Data load методом копировать с excel и вставить.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118943
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Выхрыстюк,
Не понял слово Копировать.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118962
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladml,
а как засунуть файл в буфер обмена?

Petro123,
сейчас так и делаю, но чтобы парсить, нужно точно знать, какой разделитель пришел в пользовательском файле CSV. Можно это как-то выяснить? Или можно программно заменить разделители в пришедшем файле?
А что можно сделать на Яве?

Алексей Выхрыстюк,
тоже не поняла, можно поподробнее?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118964
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,
Цель грузить xls в апекс?
Есть плагин, который грузит любой XLS(X) в коллекции (Памятник нужно поставить этому человеку, он на низком уровне разбирает файлы).
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118982
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
о, вот это было бы здорово!! Поделитесь?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118985
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,
Понимаете, вы программист, и не нужно брать на себя всё многообразие форматов в мире.
Ограниченный разброс в организации всегда можно проверить парсингом одной строки.
Подсказать код поиска символа в varchar2 ?
Напишите справку выше кнопки загрузки в свертывающемся регионе. И не ломайте голову.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118986
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39118988
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,
Работайте в паре с бизнес аналитиком, который даст вам 2, 3 формата.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119008
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
насчет бизнес-аналитика совет очень ценный, но трудновыполнимый) А насчет парсинга первой строки можно подумать, кстати. Т.е. найти самый часто встречающийся небуквенный символ? В принципе вариант, но все равно немножко "гадание" получается.

blkangel,
огромное спасибо! Изучу код, мне кажется, это то что нужно!
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119014
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilА что можно сделать на Яве?
кинетесь изучать?
"не делайте этого - мы вас потеряем. Оттуда не возвращаются" (с)
))
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119019
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetilнасчет бизнес-аналитика совет очень ценный, но трудновыполнимый)
=== его работу всё равно делаете вы - ограничиваете модель данных и формат входа.
А насчет парсинга первой строки можно подумать, кстати. Т.е. найти самый часто встречающийся небуквенный символ? В принципе вариант, но все равно немножко "гадание" получается.
ТЗ
- вверху регион Справка с текстом:
"Входной формат ограничен разделителями пробел и тире. Очерёдность колонок: Код, ДатаРождения, рост, ФИО ...."
- в первой строке функции проверка на валидность подфункция IsValidFormat с выдачей райзе.
- ...
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119020
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetilblkangel,
огромное спасибо! Изучу код, мне кажется, это то что нужно!

Если будете использовать, обратите внимание на нагрузку на сервер, скорость работы приложения у других пользователей. Поделитесь впечатлениями. Спасибо
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119031
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
а, ну если ограничения поставить... Все-таки хотелось бы погибче как-то. "," и ";" в качестве разделителей не подойдут, т.к. часто встречаются в данных, и вряд ли пользователи по моему требованию полезут в виндовые настройки менять разделитель на какие-нибудь звездочки-галочки-табуляции... Оставлю этот вариант на крайний случай, но все-таки хотелось бы найти более удобный (для пользователей) способ.

blkangel,
обязательно!=)
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119049
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilВсе-таки хотелось бы погибче как-то.
угу. Это у вас от отсутствия опыта
- как будете отличать ID в колонке от роста в см.?
- как будете объединённые ячейки расцеплять?
- и т.д. и т.п
ЗЫ
Откуда файлы? Поставьте им тоже систему за деньги) LOL
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119050
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil"," и ";" в качестве разделителей не подойдут, т.к. часто встречаются в данных
пример формата сюда в форум.
Не нобелевскую решаете.
Удачи!
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119059
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetilв виндовые настройки
упс. Забыл про формат от японцев и китайцев
))) Вроде не пятница
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119061
heavyside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,

Если плагин не прокатит, то имхо java. Библиотек, я думаю, много, мне нравится Apache POI. Java, зато никаких конвертаций в CSV. Хотя может для чтения есть что-то попроще.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119063
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heavysideApache POI+1
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119498
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123TuringvetilВсе-таки хотелось бы погибче как-то.
угу. Это у вас от отсутствия опыта
- как будете отличать ID в колонке от роста в см.?
- как будете объединённые ячейки расцеплять?
- и т.д. и т.п

Ну не настолько гибко) Ячейки, конечно, должны быть в приличном виде, и названия колонок правильные. А вот порядок и состав колонок неважен, это все собирается динамически, главное чтобы ключевые были.
Но мы отвлеклись, сейчас не об этом.

Да, похоже, без Явы не обойтись. Плагин ставиться не желает, пишет: "Bad Request. The HTTP client sent a request that this server could not understand." Возможно, это из-за того, что у нас 5-ый Апекс? Слышала, на нем многие плагины от 4-го не работают.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilА вот порядок и состав колонок неважен
а как вы отличите рост от айдишников?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119540
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123TuringvetilА вот порядок и состав колонок неважен
а как вы отличите рост от айдишников?
По шапке
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119541
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetilдолжны быть в приличном виде, и названия колонок правильные
извините, но это женская логика).
Это и есть ограничение формата.
Удачи Вам!
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119547
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilПо шапке
где ПРАВИЛЬНАЯ шапка прописана?
Заставляете буквы в шапке правильно писать?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119552
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Ни где не было сказано про пятый Апекс. :)
Я попробовал установить на пятый, он устанавливается нормально.
Но вот не работает.
Попробуйте вы, еще вот это еще под sys запустите
Код: plsql
1.
create public synonym WWW_FLOW_FILES for APEX_050000.WWV_FLOW_TEMP_FILES;
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119567
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
да уж, тоже думала, что в этом дело - увы, не работает. В смысле, по-прежнему не создается с той же ошибкой.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119581
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

У меня получилось.
Плагин я установил без проблем.
А вот когда создавал элемент FILE_BROWERS, я переключился в старый интерфейс разработки. В этом случае доступно выбрать WWW_FLOW_FILES, и тогда работает.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119582
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Так же в плагине лежит пример приложения, можно его импортировать, тоже работает.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119586
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
спасибо, если установится - попробую так!
Хм, что же он не создается? Может, я что-то не так делаю? Создаю плагин типа Процесс, в поле PL/SQL Code копирую целиком содержимое файла process_type_plugin_nl_amis_scheffer_process_excel2collection_0804.sql - выдает ошибку. А если прописать при тех же параметрах просто "begin null; end;", то создается нормально.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119591
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

СИЛЬНО, я надеюсь это никто не прочитает. ))))))))

Нажимаете Import, выбираете файл process_type_plugin_nl_amis_scheffer_process_excel2collection_0804.sql

Далее далее, плагин установлен. :)
Дальше на странице создаем процесс, типа плагин и указываем нужные параметры.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119599
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
оооой)) Вот я молодец)) Спасибо большое, так всё установилось, отлично! Теперь попробую использовать.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119656
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
прошу прощения, еще один глупый вопрос, а как перейти в старый интерфейс? У нас разработка ведется на сервере, там 5-й установлен, т.е. надо там еще 4-й поставить?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119667
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

:) Там иконочка есть среди многих прочих, Component View, в виде буквы М из четырех прямоугольников :)
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39119715
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
о сколько нам открытий чудных...!
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120291
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура, заработало!

Единственное, там в плагине имя файла вытаскивается таким образом:

Код: plsql
1.
t_filename := apex_util.get_session_state(  p_browse_item );



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

Код: plsql
1.
2.
3.
4.
select name into t_filename from 
     (select name from apex_application_files
      order by created_on desc,id desc)
   where rownum = 1;



и все заработало! Вроде бы так тоже корректно? А все-таки можно как-нибудь исправить косяк с пустым значением get_session_state?

Кстати, можно использовать и способ сохранения Table APEX_APPLICATION_TEMP_FILES, только тогда в плагине нужно исправить apex_application_files на apex_application_temp_files.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120448
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TuringvetilУра, заработало!

Единственное, там в плагине имя файла вытаскивается таким образом:

Код: plsql
1.
t_filename := apex_util.get_session_state(  p_browse_item );



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

Код: plsql
1.
2.
3.
4.
select name into t_filename from 
     (select name from apex_application_files
      order by created_on desc,id desc)
   where rownum = 1;



У меня загрузка работает и без внесения этого изменения, возможно вы название ITEM указали с двоеточием? Чего делать не надо. Тут что то вы не допоняли.
А вот пример запроса который вы написали, называется "Посмотрите, как делать никогда нельзя"... Избавитесь от этого.

Turingvetilи все заработало! Вроде бы так тоже корректно? А все-таки можно как-нибудь исправить косяк с пустым значением get_session_state?

Кстати, можно использовать и способ сохранения Table APEX_APPLICATION_TEMP_FILES, только тогда в плагине нужно исправить apex_application_files на apex_application_temp_files.

А за это спасибо, учту.

А по поводу доработок, можно попробовать связаться с автором.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120464
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,
не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь.
А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files)
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TuringvetilТаблица же темповая, заполняется в рамках сессии
а вы проверьте. Сессия апекс не равна сессии оракля.
Возьмите одновременно импорт 10000 строк и отпишитесь тут.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120493
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123TuringvetilТаблица же темповая, заполняется в рамках сессии
а вы проверьте. Сессия апекс не равна сессии оракля.
Возьмите одновременно импорт 10000 строк и отпишитесь тут.

Вообще не поняла, к чему это. Задача - вытащить именно свой загруженный файл. Я так подумала, что если таблица заполнена только для моей текущей сессии, то последний добавленный файл - и есть нужный. При чем тут сессия оракла и количество строк?
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120503
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turingvetil,
если не хотите - ничего не делайте.
Просто вы сказали что временная табла на сессию. Я сказал что сессия оракла не равно апексовой. Могут быть грабли (без тестов).
Но вы можете не читать.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120518
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetilblkangel,
не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь.
А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files)

Вообще это синоним, на обычную таблицу. Апекс умеет работать с ней в рамке одной конкретной сессии, вы же написали прямой селект к ней.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120525
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Turingvetil,

Ну и вообще, запрос такого вида к БД, уже сам по себе говорит о ненормальности чего то (Схемы БД, ее недопонимание и т.д.).
Не должно быть в коде таких запросов.
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120535
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelTuringvetilblkangel,
не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь.
А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files)

Вообще это синоним, на обычную таблицу. Апекс умеет работать с ней в рамке одной конкретной сессии, вы же написали прямой селект к ней.

Аа, тогда понятно!
...
Рейтинг: 0 / 0
Excel -> CSV программно
    #39120538
Turingvetil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel, большое спасибо за найденное решение!=) И всем ответившим - за помощь!
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Excel -> CSV программно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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