|
|
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Создаю стотысячную тему на тему преобразования XLS в CSV, т.к. в предыдущих ответа не нашла. Написала красивую и хорошую процедуру загрузки данных из CSV в таблицы Оракла, которая запускается из Апекса, за основу брала вот этот пример: http://avdeo.com/2008/05/21/uploading-excel-sheet-using-oracle-application-express-apex/ В коде твердо зашит разделитель, использующийся в csv. Все хорошо, но файлы будут загружаться пользователями. Можно, конечно, попросить их конвертировать xls в csv, но настройки разделителя у всех свои. - Можно ли как-то вытащить эти настройки в Апексе, чтобы передавать в процедуру как параметр? - Можно ли как-то вытащить данные из сохраненного в blob файла xls? - Как и на чем написать утилитку, которая будет при загрузке файла преобразовывать его в csv с заданным разделителем? И как ее запустить из Апекса? Мне наиболее вероятным кажется последний вариант. Возможно, есть еще какие-то выходы? Подскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 18:02 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Парсить ХLS задача не тривиальная :) У меня (правда не на APEX) хорошо зарекомендовал себя способ копирования и вставки из буфера обмена. Excel делает разделитель между колонками, символ табуляции кажется, остальное дело техники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 18:30 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, только CSV либо Java. Первое загоняйте в таблу и парсите там как угодно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 18:35 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Для пользователей более понятен загрузчик через стандартный Data load методом копировать с excel и вставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 04:16 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Алексей Выхрыстюк, Не понял слово Копировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 08:13 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Vladml, а как засунуть файл в буфер обмена? Petro123, сейчас так и делаю, но чтобы парсить, нужно точно знать, какой разделитель пришел в пользовательском файле CSV. Можно это как-то выяснить? Или можно программно заменить разделители в пришедшем файле? А что можно сделать на Яве? Алексей Выхрыстюк, тоже не поняла, можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 08:53 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Цель грузить xls в апекс? Есть плагин, который грузит любой XLS(X) в коллекции (Памятник нужно поставить этому человеку, он на низком уровне разбирает файлы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 08:57 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, о, вот это было бы здорово!! Поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:15 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Понимаете, вы программист, и не нужно брать на себя всё многообразие форматов в мире. Ограниченный разброс в организации всегда можно проверить парсингом одной строки. Подсказать код поиска символа в varchar2 ? Напишите справку выше кнопки загрузки в свертывающемся регионе. И не ломайте голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:17 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, http://apex-plugin.com/oracle-apex-plugins/process-type-plugin/excel2collections_271.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:20 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Работайте в паре с бизнес аналитиком, который даст вам 2, 3 формата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:22 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Petro123, насчет бизнес-аналитика совет очень ценный, но трудновыполнимый) А насчет парсинга первой строки можно подумать, кстати. Т.е. найти самый часто встречающийся небуквенный символ? В принципе вариант, но все равно немножко "гадание" получается. blkangel, огромное спасибо! Изучу код, мне кажется, это то что нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:50 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilА что можно сделать на Яве? кинетесь изучать? "не делайте этого - мы вас потеряем. Оттуда не возвращаются" (с) )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 09:57 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetilнасчет бизнес-аналитика совет очень ценный, но трудновыполнимый) === его работу всё равно делаете вы - ограничиваете модель данных и формат входа. А насчет парсинга первой строки можно подумать, кстати. Т.е. найти самый часто встречающийся небуквенный символ? В принципе вариант, но все равно немножко "гадание" получается. ТЗ - вверху регион Справка с текстом: "Входной формат ограничен разделителями пробел и тире. Очерёдность колонок: Код, ДатаРождения, рост, ФИО ...." - в первой строке функции проверка на валидность подфункция IsValidFormat с выдачей райзе. - ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:01 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetilblkangel, огромное спасибо! Изучу код, мне кажется, это то что нужно! Если будете использовать, обратите внимание на нагрузку на сервер, скорость работы приложения у других пользователей. Поделитесь впечатлениями. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:04 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Petro123, а, ну если ограничения поставить... Все-таки хотелось бы погибче как-то. "," и ";" в качестве разделителей не подойдут, т.к. часто встречаются в данных, и вряд ли пользователи по моему требованию полезут в виндовые настройки менять разделитель на какие-нибудь звездочки-галочки-табуляции... Оставлю этот вариант на крайний случай, но все-таки хотелось бы найти более удобный (для пользователей) способ. blkangel, обязательно!=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:11 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilВсе-таки хотелось бы погибче как-то. угу. Это у вас от отсутствия опыта - как будете отличать ID в колонке от роста в см.? - как будете объединённые ячейки расцеплять? - и т.д. и т.п ЗЫ Откуда файлы? Поставьте им тоже систему за деньги) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:19 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil"," и ";" в качестве разделителей не подойдут, т.к. часто встречаются в данных пример формата сюда в форум. Не нобелевскую решаете. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:20 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetilв виндовые настройки упс. Забыл про формат от японцев и китайцев ))) Вроде не пятница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:22 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Если плагин не прокатит, то имхо java. Библиотек, я думаю, много, мне нравится Apache POI. Java, зато никаких конвертаций в CSV. Хотя может для чтения есть что-то попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:23 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
heavysideApache POI+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 10:24 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Petro123TuringvetilВсе-таки хотелось бы погибче как-то. угу. Это у вас от отсутствия опыта - как будете отличать ID в колонке от роста в см.? - как будете объединённые ячейки расцеплять? - и т.д. и т.п Ну не настолько гибко) Ячейки, конечно, должны быть в приличном виде, и названия колонок правильные. А вот порядок и состав колонок неважен, это все собирается динамически, главное чтобы ключевые были. Но мы отвлеклись, сейчас не об этом. Да, похоже, без Явы не обойтись. Плагин ставиться не желает, пишет: "Bad Request. The HTTP client sent a request that this server could not understand." Возможно, это из-за того, что у нас 5-ый Апекс? Слышала, на нем многие плагины от 4-го не работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 14:42 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilА вот порядок и состав колонок неважен а как вы отличите рост от айдишников? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 14:59 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Petro123TuringvetilА вот порядок и состав колонок неважен а как вы отличите рост от айдишников? По шапке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:11 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetilдолжны быть в приличном виде, и названия колонок правильные извините, но это женская логика). Это и есть ограничение формата. Удачи Вам! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:12 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilПо шапке где ПРАВИЛЬНАЯ шапка прописана? Заставляете буквы в шапке правильно писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:14 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Ни где не было сказано про пятый Апекс. :) Я попробовал установить на пятый, он устанавливается нормально. Но вот не работает. Попробуйте вы, еще вот это еще под sys запустите Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:17 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, да уж, тоже думала, что в этом дело - увы, не работает. В смысле, по-прежнему не создается с той же ошибкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:24 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, У меня получилось. Плагин я установил без проблем. А вот когда создавал элемент FILE_BROWERS, я переключился в старый интерфейс разработки. В этом случае доступно выбрать WWW_FLOW_FILES, и тогда работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:32 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Так же в плагине лежит пример приложения, можно его импортировать, тоже работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:33 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, спасибо, если установится - попробую так! Хм, что же он не создается? Может, я что-то не так делаю? Создаю плагин типа Процесс, в поле PL/SQL Code копирую целиком содержимое файла process_type_plugin_nl_amis_scheffer_process_excel2collection_0804.sql - выдает ошибку. А если прописать при тех же параметрах просто "begin null; end;", то создается нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:37 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, СИЛЬНО, я надеюсь это никто не прочитает. )))))))) Нажимаете Import, выбираете файл process_type_plugin_nl_amis_scheffer_process_excel2collection_0804.sql Далее далее, плагин установлен. :) Дальше на странице создаем процесс, типа плагин и указываем нужные параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:40 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, оооой)) Вот я молодец)) Спасибо большое, так всё установилось, отлично! Теперь попробую использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 15:47 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, прошу прощения, еще один глупый вопрос, а как перейти в старый интерфейс? У нас разработка ведется на сервере, там 5-й установлен, т.е. надо там еще 4-й поставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 16:31 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, :) Там иконочка есть среди многих прочих, Component View, в виде буквы М из четырех прямоугольников :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 16:35 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, о сколько нам открытий чудных...! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2015, 17:03 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Ура, заработало! Единственное, там в плагине имя файла вытаскивается таким образом: Код: plsql 1. а у меня почему-то пустое значение возвращается (хотя p_browse_item указывается правильно), поэтому сначала не работало. Я заменила на такой код: Код: plsql 1. 2. 3. 4. и все заработало! Вроде бы так тоже корректно? А все-таки можно как-нибудь исправить косяк с пустым значением get_session_state? Кстати, можно использовать и способ сохранения Table APEX_APPLICATION_TEMP_FILES, только тогда в плагине нужно исправить apex_application_files на apex_application_temp_files. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 11:47 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilУра, заработало! Единственное, там в плагине имя файла вытаскивается таким образом: Код: plsql 1. а у меня почему-то пустое значение возвращается (хотя p_browse_item указывается правильно), поэтому сначала не работало. Я заменила на такой код: Код: plsql 1. 2. 3. 4. У меня загрузка работает и без внесения этого изменения, возможно вы название ITEM указали с двоеточием? Чего делать не надо. Тут что то вы не допоняли. А вот пример запроса который вы написали, называется "Посмотрите, как делать никогда нельзя"... Избавитесь от этого. Turingvetilи все заработало! Вроде бы так тоже корректно? А все-таки можно как-нибудь исправить косяк с пустым значением get_session_state? Кстати, можно использовать и способ сохранения Table APEX_APPLICATION_TEMP_FILES, только тогда в плагине нужно исправить apex_application_files на apex_application_temp_files. А за это спасибо, учту. А по поводу доработок, можно попробовать связаться с автором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:07 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangel, не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь. А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:18 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
TuringvetilТаблица же темповая, заполняется в рамках сессии а вы проверьте. Сессия апекс не равна сессии оракля. Возьмите одновременно импорт 10000 строк и отпишитесь тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:35 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Petro123TuringvetilТаблица же темповая, заполняется в рамках сессии а вы проверьте. Сессия апекс не равна сессии оракля. Возьмите одновременно импорт 10000 строк и отпишитесь тут. Вообще не поняла, к чему это. Задача - вытащить именно свой загруженный файл. Я так подумала, что если таблица заполнена только для моей текущей сессии, то последний добавленный файл - и есть нужный. При чем тут сессия оракла и количество строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:38 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, если не хотите - ничего не делайте. Просто вы сказали что временная табла на сессию. Я сказал что сессия оракла не равно апексовой. Могут быть грабли (без тестов). Но вы можете не читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:42 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetilblkangel, не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь. А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files) Вообще это синоним, на обычную таблицу. Апекс умеет работать с ней в рамке одной конкретной сессии, вы же написали прямой селект к ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:49 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
Turingvetil, Ну и вообще, запрос такого вида к БД, уже сам по себе говорит о ненормальности чего то (Схемы БД, ее недопонимание и т.д.). Не должно быть в коде таких запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:52 |
|
||
|
Excel -> CSV программно
|
|||
|---|---|---|---|
|
#18+
blkangelTuringvetilblkangel, не, указала без двоеточия, ну наверное что-то в настройках айтема напутала, с этим разберусь. А почему скрипт неправильный? Таблица же темповая, заполняется в рамках сессии? (по крайней мере, в 5-ой версии apex_application_temp_files) Вообще это синоним, на обычную таблицу. Апекс умеет работать с ней в рамке одной конкретной сессии, вы же написали прямой селект к ней. Аа, тогда понятно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2015, 13:56 |
|
||
|
|

start [/forum/topic.php?all=1&fid=50&tid=1874760]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 485ms |

| 0 / 0 |
