Как стать автором
Обновить

Комментарии 21

Архитектурно ничего не понятно: что в PL/SQL, что в Java, что делает библиотека, что вы писали?
Можно просто в несколько строчек по пунктам сценарий? Ну, там генерируется то-то по кнопке из GUI, сохраняется туда-то, данные берутся так-то, подставляются туда-то, библиотека делает с данными то-то, XLS генерится так-то; тут GUI, тут скрипт, тут готовое, тут самописное и т.д.

Ну и с базой понятно, а Java-то где крутится и что вызывается, точка входа какая, точка выхода (куда файл кладется)? И если есть Java, то не лучше ли у неё с генерацией XLS?

Такое ощущение, что Вы не читали пост. В таком порядке всё и написал. Библиотека AS_XLSX в PL/SQL используется для формирования выгрузки в эксель. Чтобы эту выгрузку произвести надо написать немало кода. Моя программка из введённых параметров и столбцов формирует txt со всеми запросами для создания объектов в пакете PL/SQL. Кто в PL/SQL работает, тот знает какая это нудятина набирать всё заново для новой выгрузки. И по-моему у меня такие простые классы, что какие могут быть вопросы? Файл кладётся куда укажете. Берёте из него готовые запросы, копируете в PL/SQL. Куда уж проще?

Я ждал более конструктивной критики в части программирования, а не то какой я писатель плохой, сюжет запутал. Но учту, конечно же, в следующий раз напишу проще. Спасибо!

Три человека уже в закладки добавили, значит понимают о чём речь..поддержите, товарищи!

  1. Я не читал пост (кроме вводных абзацев и пробежки по тексту в попытке понять суть). Возможно 3 человека тоже не читали и ждут, когда вы на мои вопросы ответите )

  2. Я не оценивал вас как писателя, но я действительно оценил текст и написал чего мне не хватает. Сложно понять зачем читать, если не понятна ни проблематика ни суть решения, при таком совсем неразумно пытаться код читать.

  3. Вы дали пояснения, но многое не стало понятнее: Java только для gui и формирования пакета? В чем проблема библиотеки, почему для неё что-то нужно дописывать? Файл формируется на сервере БД и там же выкладывается?

  4. Мой совет по структуре статей (можете ему не следовать, но возможно не мне одному так удобно, может и не 3 закладки будет) : проблематика, суть решения (архитектура, сценарий), описание решения (код), пример.

  1. "Не читал пост", но пост плохой. Прекрасный ответ.

  2. Я понял, надо вводную часть описывать более просто и подробно. Учту.

  3. Java только для формирования готовых запросов для PL/SQL. Файл формируется в файловой системе у Вас на компьютере. Вы его открываете копируете из него готовые запросы в PL/SQL. Пакет AS_XLSX (перешёл по ссылке на пакет, там объяснения зачем он) - "Это пакет PL/SQL, написанный Антоном Шеффером, который позволяет нам экспортировать файлы Excel XLSX из базы данных Oracle.". Проблем нет, своим приложением я упрощаю создание запросов. Раньше я делал каждый столбец руками, копировал, писал номер столбца, следил за тем, чтобы имена типов и объектов совпадали. Много нюансов. А тут я просто ввёл параметры и столбцы и получил готовый код.
    По библиотекам. Библиотека Swing для формирования Gui. Пишем код чтобы был GUI.Библиотека AS_XLSX для формирования экселя. Везде надо писать код. Библиотека в помощь. Зачем её дописывать, я просто её использую.

  4. Учту.

Простите, я, может, тоже не понял идею, но прочитал пост полноценно 2 раза и вопросы также остались:
  1. Почему обвязку для удобства генерации нельзя было написать на том же PL/SQL? Там всякие динамические скрипты и запросы, на мой взгляд, даже проще формировать.
  2. Для чего вообще нужно создание объектов в БД? Описание as_xlsx на github мягко говоря скудное, чтобы понять, как она работает.
  3. Про GUI тут уже спрашивали, но тем не менее, из PL/SQL можно и в веб вынести. Или XML/JSON отдать. Или цель была именно в написании десктоп-приложения? И именно на Java?

В общем, у меня сложилось ощущение, что всё делалось именно для практики Java-разработки и получения фидбека от сообщества именно по ней. А мы решили понять верхнеуровневую проблематику, зачем это всё затевалось, и почему было сделано именно в такой архитектуре, вместо критики недочётов стиля вроде «кучи append»…

Благодарю за такой объективный комментарий!
В принципе да, PL/SQL это позволяет. И я уже сделал ранее динамическое создание эксель-файла нужного формата, в плане оформления, из любого селекта. Однако при динамическом создании нельзя указать для отдельных столбцов отличные от других параметры. И когда ты знаешь сколько у тебя будет столбцов, то динамически делать некорректно, тем более, что в некоторых столбцах нужен жирный шрифт и т.д. Параметры надо задавать сразу и каждому столбцу. Вот поэтому для каждой выгрузки свои объекты и много кода, который каждый раз писать надоело, т.к. тратится много времени и нервов, а заказчик постоянно просит сделать новые выгрузки, а потом поменять столбцы местами и т.д.

Gui просто для удобства. Скачал, открыл (нужна только java на компьютере), вбил параметры и столбцы, получил готовый код для вставки в пакет PL/SQL. Всё! Это ли не счастье? :) Библиотека AS_XLSX - просто библиотека, которую я использую для выгрузки (есть и другие, само собой). Каждый делает как ему удобно.

Основной посыл поста такой: ранее я читал статью на Хабре как делать выгрузку из PL/SQL в xls (ссылку найти не могу, возможно удалили) и просто хотел поделиться с людьми, которые тоже используют библиотеку AS_XLSX, своей утилитой, которая сэкономит им море времени и нервов. Кому надо, тот поисковиком найдёт эту статью и легко применит это в работе. Также делал утилиту для PL/SQL, рекомендую ознакомиться :) https://github.com/mrprogre/PL-SQL-Helper

Второй момент да, я думал мне подскажут, как грамотнее в Java это всё описать, т.к. я её изучаю (и да, в личку прислали несколько интересных идей).

Похоже на всё ответил.

Моя ошибка, что пост написан неграмотно для Хабра (один умный человек посоветовал посты выкладывать в пятницу вечером, чтобы поменьше людей "не в теме" читали и поливали пост своей любовью). А тот кому нужен plsql, formspider, as_xlsx, java - его найдёт и оценит по достоинству (9 закладок о чём-то то и говорит)!

Привет! Переделал статью с учётом всех пожеланий и замечаний. Норм?)

Не очень понятно зачем нужен гуи. Не очень понятно почему запрос формирования файла Excel оказался в коде java. Не самый лучший шаблон программирования, мягко говоря

GUI просто для формирования запросов, которые создают объекты PL/SQL, чтобы я не делал их руками, а просто ввёл параметры и столбцы и получил готовый код для вставки в PL/SQL. Тут любой язык бы подошёл, но я изучаю Java. Я просто упростил себе работу. Скорость создания выгрузки из Оракла выросла в 10 раз минимум.

Как вариант параметры в тестовом файле хранить (json, xml). Если изучаете java, то практичнее с этими форматами поработать

Лично я бы сделал решение обычным бат файлом, который вызывает java класс, который считывает настройки из текстового файла

Можно и так как вариант, но мне с gui кажется проще работать. Ввёл параметры - получил готовые запросы.

Json можно как промежуточный слой использовать. С точки зрения вашей программы это будет импорт экспорт того, что вы вводите. Полезно в том плане, что не надо в следующий вспоминать что надо вводить. Я такие json-ы в гит трекаю, очень удобно

Да, интересная мысль, в будущем применю где-нибудь! Спасибо!

А где, простите, отчет?

Ну это обычно такая красивая табличка с заголовками, рамочками, разбиением на страницы, подитогами итп

А что за отчёт, простите?

А чтобы в PL/SQL сделать красивую табличку надо написать много кода. Моя программка ускоряет этот процесс. Я не пойму почему столько негатива. Мне эта программа уже сейчас помогла. Я делал 4 разных выгрузки. Раньше бы я потратил на это около дня ,с учётом переделывания и т.д. Сейчас я сделал их за пол часа. Разве не результат? Помогло мне - поможет и другим.

А разве не проще работать с xml в PL/SQL?

Кому как удобно. Я выбрал способ формирования выгрузки через библиотеку AS_XLSX. Может пришлёте ссылку на статейку?

Можете покапать в этом направлении, я например в xml выгружаю что-то вроде этого

select "XMLresult" into vClob from ( select 1 as "id", CONVERT(xmlelement("Report", xmlattributes('Report' as "Report"), xmlagg( xmlelement("row", xmlforest( "..." "...", ... )) ) ).getclobval(), 'UTF8') as "XMLresult" from ( ... );

попробую, интересно! в принципе, если пришлёте целую функцию от и до, то я могу добавить в программу формирование кода и в таком виде.. можно будет выбрать галочкой, к примеру.. похоже тут тоже много кода получится :)

С учётом комментариев и личных сообщений:

  • доработан исходный код и интерфейс;

  • добавлена возможность загрузки столбцов из csv или txt файлов;

  • добавлены комбобоксы со шрифтами, типами данных, boolean переменными и выравниванием в ячейках;

  • цвет фона заголовков теперь можно увидеть сразу в параметрах. При указании другого кода цвета, фон ячейки поменяет цвет на указанный;

  • добавлена кнопка очистки параметров.

Изменения можно увидеть здесь. Там же можно скачать jar-файл приложения.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.