Создайте файл xls, используя PL/SQL, без использования xml
Моя система разработана в APEX/Oracle 11g, и я хочу создать файл xls напрямую, без необходимости создания файла xml. В настоящее время система создает файл XML, который затем может быть сохранен в формате xls, но очень привередливому пользователю не нравится предупреждение Windows 7 при попытке открыть файл XML (предупреждение Excel о том, что формат файла делает не соответствует его расширению). Есть ли способ использовать Oracle PL/SQL из APEX для достижения этой цели?
3 ответа
Мортен Братен создал великолепную страницу ресурсов PLSQL: http://code.google.com/p/plsql-utils/
В частности, Антон Схеффер поделился своим пакетом AS_XLSX, который бы соответствовал вашим потребностям APEX: http://technology.amis.nl/2011/02/19/create-an-excel-file-with-plsql/
Очень прост в использовании с хорошими примерами в заголовке пакета.
Вы можете использовать пакет OraExcel для генерации реальных файлов xlsx (в двоичном виде). С этим пакетом вы можете форматировать ячейки и применять стили, как в Excel.
Он имеет простой API, в котором вы можете шаг за шагом создавать файлы Excel и описывать каждую ячейку, как вы хотите выглядеть.
Когда вы завершаете работу с файлом Excel, появляется возможность сгенерировать файл xlsx в переменную BLOB PL/SQL, которую можно вернуть в APEX и загрузить.
Там нет предупреждений, которые раздражают ваших клиентов.
Вы можете написать простую функцию, подобную приведенной ниже, для создания электронной таблицы Excel и возврата ее в APEX:
CREATE OR REPLACE FUNCTION get_excel RETURN BLOB IS
my_blob BLOB;
BEGIN
ora_excel.new_document;
ora_excel.add_sheet('My sheet');
ora_excel.query_to_sheet('SELECT field1, field2, field2 FROM my_table');
ora_excel.save_to_blob(my_blob);
RETURN my_blob;
END;
Есть больше примеров на: http://www.oraexcel.com/examples
ура
Вы можете использовать хранимую процедуру Java
http://docs.oracle.com/cd/B28359_01/java.111/b31225/chfive.htm
и Apache Poi
http://poi.apache.org/spreadsheet/index.html
создавать реальные таблицы и сохранять их в поле lob, а также возвращать пользователю