powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый экспорт в Excel
54 сообщений из 54, показаны все 3 страниц
Быстрый экспорт в Excel
    #39806862
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю в Delphi 7. Получил ответ на запрос в компоненту Query. Его вывожу в Эксель по строчно. Но это медленно, есть ли более быстрые метод? Вот кусочек кода
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        qrZapros.Close;
        qrZapros.ParamByName('kod').Value:=DBLookupComboBox1.KeyValue;
        qrZapros.ParamByName('dat1').Value:=DBDateTimeEditEh3.Text;
        qrZapros.Open;

        if not qrZapros.IsEmpty then
          begin
           m:=6;
           Update;
           Cursor:=crHourGlass;
           exl:=CreateOleObject('Excel.Application');
           Workbook:=exl.Application.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'report.xls');
           Sheet:=WorkBook.WorkSheets[1];
           p:=qrZapros.FieldCount;
           while not qrZapros.EOF do
             begin
              for j:=0 to p-1 do
                 Sheet.Cells(m,j+2):=qrZapros.Fields.Fields[j].Value;
              inc(m);
              qrZapros.Next;
             end;
           exl.Application.Visible:=True;
          end;
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806865
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри тут 17749041
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806888
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

Существуют библиотеки, позволяющие экспортировать в XLS/XLSX - файлы без наличия Excel'я на компьютере и они работают вдобавок значительно быстрее Excel'я через OLE.
Я в последнее время перешел на XLSReadWrite 20282774 . Но есть и другие, дешевле или вообще бесплатные
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806889
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
26.04.2019 15:19, Rustam Ergashev пишет:
> Работаю в Delphi 7. Получил ответ на запрос в компоненту Query.
> Его вывожу в Эксель по строчно.
> Но это медленно, есть ли более быстрые метод?

Range()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806893
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806904
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть тупо разделить котлеты и мух?

Сначала выполнить нужный селект (можно даже вьюшку создать) и выгрузить его в CSV,
А потом одним махом этот CSV открть Екселем и затем навести красивости по шаблону (шрифт, цвета, форматы и т.п.)
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806912
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён Rustam Ergashev,

Существуют библиотеки, позволяющие экспортировать в XLS/XLSX - файлы без наличия Excel'я на компьютере и они работают вдобавок значительно быстрее Excel'я через OLE.
Я в последнее время перешел на XLSReadWrite 20282774 . Но есть и другие, дешевле или вообще бесплатные+1
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806915
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик СемёнСуществуют библиотеки, позволяющие экспортировать в XLS/XLSX - файлы без наличия Excel'я на компьютере и они работают вдобавок значительно быстрее Excel'я через OLE. В том, что они работают быстрее, я не сомневаюсь. Сомневаюсь в том, что они не налажают в каких-то нетривиальных действиях.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806917
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DevEx-овые гриды тоже умеют в эксель достаточно шустро экспортировать.
В теории можешь даже сам руками экселевские XML-сопли сгенерировать, а затем в ZIP сжать. Правда придётся слегка окунуться в разбор формата.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806920
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaDevEx-овые гриды тоже умеют в эксель достаточно шустро экспортироватьа уж как они в xlsx экпортируют - просто праздник какой-то
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39806954
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

есть вот такой проект - https://github.com/jmcnamara/libxlsxwriter. Бесплатно. Враппер на Дельфи надо поискать, может и есть.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807000
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Excel может открывать HTML и XML. Сформируйте в Excel таблицу нужного вам вида, сохраните ее в html, а потом в программе формируйте HTML аналогичной структуры простой записью в текстовый файл.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807032
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimonka,

Это теория. И зачем еще что-то замедлять ZIPами и иже?
И разбор плоской XML-таблицы всегда медленнее текстового файла.
Про девкин грид даже не упоминай. Тут надо без всяких гридов делать.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807035
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисКроик СемёнСуществуют библиотеки, позволяющие экспортировать в XLS/XLSX - файлы без наличия Excel'я на компьютере и они работают вдобавок значительно быстрее Excel'я через OLE. В том, что они работают быстрее, я не сомневаюсь. Сомневаюсь в том, что они не налажают в каких-то нетривиальных действиях.Согласен.
Но ведь если Исходные данные не плоские (т.е. несколько запросов а ля OLAP) Excel потом затормозит сводить измерения своими средствамиl
Нет?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807038
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI, т.е. чтобы просто создать. файл Экселя, ты предлагаешь "A C library for creating Excel XLSX files." и поискать для этой хрени "Враппер на Дельфи надо поискать, может и есть"?
А если Эксель 5, например?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807042
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010, ну есть уже Зачем бритву точить? 21872838 можно вообще с дельфями не париться, а просто выгрузить из базы в Эксель средствами базы.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807043
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorСоколинский Бориспропущено...
В том, что они работают быстрее, я не сомневаюсь. Сомневаюсь в том, что они не налажают в каких-то нетривиальных действиях.Согласен.
Но ведь если Исходные данные не плоские (т.е. несколько запросов а ля OLAP) Excel потом затормозит сводить измерения своими средствамиl
Нет?
Налажать может и сам Excel, если его вызывать в многопотоковом режиме при большой нагрузке на сервер.
У XLSReadWriteII ни разу не сталкивался с тем, чтобы он налажал. При этом не требуется установка десктопного лицензионного ПО на сервер, потребление ресурсов значительно ниже, скорость генерации и количество генерируемых файлов намного выше.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807044
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator, есть уже CSV
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807051
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2...
У XLSReadWriteII ни разу не сталкивался с тем, чтобы он налажал. При этом не требуется установка десктопного лицензионного ПО на сервер, потребление ресурсов значительно ниже, скорость генерации и количество генерируемых файлов намного выше.

"Налажать" он может еще как, ибо реализует, естественно, не "всё-всё-всё", а лишь самое нужно (по мнению разработчика), сталкивался. Но жить можно, и плюсов от его использования куда больше, чем когда его не используешь, да.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807052
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

Признайся, высосано из пальца.
Тем более, СУБД не озувчена, объём данных неизвестен, таблица плоская (imho)
и не путай бесплатное ПО и лицензии. Вполне можно юзать OOCalc и Libreofice.
___
И ещё вопрос. Как может налажать Эксель? Количеством строк/колонок?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807054
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, "всё-всё-всё" это форматирование? или эксельные формулы?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807064
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorasutp2,

Признайся, высосано из пальца.
Тем более, СУБД не озувчена, объём данных неизвестен, таблица плоская (imho)
и не путай бесплатное ПО и лицензии. Вполне можно юзать OOCalc и Libreofice.
___
И ещё вопрос. Как может налажать Эксель? Количеством строк/колонок?
А ты поработай c Excel в режиме, когда обращение к нему через OLE идет через потоки, не являющиеся главным потоком приложения. При этом в винды авторизации пользователя не было (99% времени режим работы сервера). Любой выскакивающий в Excel диалог (по разным причинам) превращает его поток в тупня)))) И попробуй создать например 100 одновременно используемых экземпляров Excel через OLE.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807068
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Gatorasutp2,

Признайся, высосано из пальца.
Тем более, СУБД не озувчена, объём данных неизвестен, таблица плоская (imho)
и не путай бесплатное ПО и лицензии. Вполне можно юзать OOCalc и Libreofice.
___
И ещё вопрос. Как может налажать Эксель? Количеством строк/колонок?
А ты поработай c Excel в режиме, когда обращение к нему через OLE идет через потоки, не являющиеся главным потоком приложения. При этом в винды авторизации пользователя не было (99% времени режим работы сервера). Любой выскакивающий в Excel диалог (по разным причинам) превращает его поток в тупня)))) И попробуй создать например 100 одновременно используемых экземпляров Excel через OLE.

Из той же серии - работа с OLE под управлением виндовз-сервисов.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807071
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2А ты поработай c Excel в режиме, когда обращение к нему через OLE идет через потоки, не являющиеся главным потоком приложения. Пробовал.
Не помню сколько инстанций одновременно крутилось (сильно меньше 100), но это непринципиально.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807074
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

Во-первых я отключаю диалоги и алерты в ехсelе сразу.
А во-вторый мои MSSQL общаются С MSExcel своисм средствами (linked serveh (OLE DB)
А в-третьих BCP тоже умеет результаты запроса выгружать в CSV/
___
Повторяю. CSV достаточно. Дельфи лишняя.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807075
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисasutp2А ты поработай c Excel в режиме, когда обращение к нему через OLE идет через потоки, не являющиеся главным потоком приложения. Пробовал.
Не помню сколько инстанций одновременно крутилось (сильно меньше 100), но это непринципиально.
Да ну нафик. Очередной раз при запуске СОМ - сервера получаем диалог о том, что данный документ небезопасен, или что формат старый и надо бы его обновить - ну и нафига это, если есть возможность просто обработать и сохранить файл без привязки к инсталляции у MS Office.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807076
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

Это ты с ним не умеешь работать. Можно вообще всю лабуду в консоли запустить простыми средствами.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807080
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorёёёёё,

Это ты с ним не умеешь работать. Можно вообще всю лабуду в консоли запустить простыми средствами.


Зачем глупостями заниматься, если есть старое проверенное средство.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807083
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёДа ну нафик. Очередной раз при запуске СОМ - сервера получаем диалог о том, что данный документ небезопасен, или что формат старый и надо бы его обновить
Пример можно? Ни разу такого не получал.


ёёёёё ну и нафига это, если есть возможность просто обработать и сохранить файл без привязки к инсталляции у MS Office. Давайте возьмем такую схему формирования отчета:
1. Открыть шаблон
2. (а) Просканировать список именованных диапазонов и (б) вставить данные.
3. Запустить макрос, который обновит сводные таблицы (с самыми разными агрегатными функциями, группировками и т.п.) и доточит форматирование, которое слетает после обновления.
4. Показать результат или сразу распечатать.

1, 2а и 4 программируются один раз для любого приложения. 2б - обычно совсем небольшой код, строк под 40.
3 - обычно тоже одинаковый для всех.
В итоге минимум времени, одинаковая схема и легкая кастомизация под требования пользователей без изменения кода и расхождения версий.

Как это будет выглядеть в случае файлового генератора?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807088
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисёёёёёДа ну нафик. Очередной раз при запуске СОМ - сервера получаем диалог о том, что данный документ небезопасен, или что формат старый и надо бы его обновить
Пример можно? Ни разу такого не получал.Например, cкачал из mos.ru и открываешь в офисе.
Но вопрос ТС о другом - " Быстрый экспорт (из БД) в Excel"
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807097
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис...возьмем такую схему формирования отчета:
1. Открыть шаблон
2. (а) Просканировать список именованных диапазонов и (б) вставить данные.
3. Запустить макрос, который обновит сводные таблицы (с самыми разными агрегатными функциями, группировками и т.п.) и доточит форматирование, которое слетает после обновления.
4. Показать результат или сразу распечатать.

1, 2а и 4 программируются один раз для любого приложения. 2б - обычно совсем небольшой код, строк под 40.
3 - обычно тоже одинаковый для всех.
В итоге минимум времени, одинаковая схема и легкая кастомизация под требования пользователей без изменения кода и расхождения версий.

Как это будет выглядеть в случае файлового генератора?

В случае файлового генератора макрос логически перемещается в другое место: плагин-dll или в блок скрипта и т.п.
Все остальное не меняется.
...
Соколинский БорисёёёёёДа ну нафик. Очередной раз при запуске СОМ - сервера получаем диалог о том, что данный документ небезопасен, или что формат старый и надо бы его обновить
Пример можно? Ни разу такого не получал.
...
Ну привет. Ни разу не видел, как при открытии "офисного" файла появляется предупреждение "о небезопасности"? Или удивленный вопрос какого-нибудь Libre office.

Откуда разработчику вообще знать, что у клиента установлено из "офисов" и какие у них разрешения.

И наличие не всегда обязательно: например, твой сервер централизованно обрабатывает MS Excel файлы, подготовленные "руками" в других местах по шаблону, а твое приложение просто выгребает из них данные.

А скорость обработки вообще лучше не сравнивать.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807189
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, если нужна только табличка, то простых вариантов много - csv, текст, dbase, xml. А если нужно непростое форматирование, диаграммы, картинки и объекты, то библиотеки прямого вывода в Экселевский файл. Можно пойти по гибридному пути. Сначала сформировать xml. Остальное (что не позволяет xml) добить добить через ole.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807192
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёВ случае файлового генератора макрос логически перемещается в другое место: плагин-dll или в блок скрипта и т.п. Все остальное не меняется.
Скрипт еще можно пережить, но хардкодить такие вещи, ИМХО, крайне порочная практика. Но главное в другом: какие шансы, что на выходе получится то, что нужно?

ёёёёёНу привет. Ни разу не видел, как при открытии "офисного" файла появляется предупреждение "о небезопасности"? Или удивленный вопрос какого-нибудь Libre office.
Мы же за COM говорим? Не видел, т.н. "настройки безопасности" в этом случае игнорируются.

ёёёёёОткуда разработчику вообще знать, что у клиента установлено из "офисов" и какие у них разрешения.

Если у клиента нет ни MS, ни Open, в чем смысл использования именно этого формата?

ёёёёёА скорость обработки вообще лучше не сравнивать. По этой логике нужно все писать на asm-е.
Скорость важна когда она важна.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807198
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

скорость кода на асме и на делфи отличается не кардинально.
скорость генерации документа Excel через OLE и через тотже XLSReadWrite отличается в десятки раз.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807200
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2скорость кода на асме и на делфи отличается не кардинально. Может и кардинально.
При частоте генерации отчета, скажем, 5/час насколько может быть существенна экономия 1 с. на каждом?

Но опять же мой главный вопрос без ответа - каковы шансы, что файловый генератор реализует все так же корректно, как эксель?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807205
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисasutp2скорость кода на асме и на делфи отличается не кардинально. Может и кардинально.Ммм, серьезно?

Соколинский БорисПри частоте генерации отчета, скажем, 5/час насколько может быть существенна экономия 1 с. на каждом?когда отчет генерируется в excel 20 минут, а через direct 5 секунд, а таких отчетов генерится вагон и маленькая тележка - то ВЕСЬМА существенно.

Соколинский БорисНо опять же мой главный вопрос без ответа - каковы шансы, что файловый генератор реализует все так же корректно, как эксель?Шансов не меньше, чем у Excel, который берет и неожиданно дохнет по одной из миллиона возможных причин. За все время у меня не было ни одного случая некорректного формирования экселевского документа.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807213
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
За все время у меня не было ни одного случая некорректного формирования экселевского документа.
Случаев генерации "кривых" документов тоже не припомню.
Бывали случаи, когда не могли прочитать данные из ms-excel документа.
Случаи довольно экзотические (например, работа с внедренными картинками), но они были.

Что тут говорить, библиотека хорошая, и клиенты довольны, и разработчики.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807217
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

особенно в D7

чтобы не мучится с этим CreateOleObject('Excel.Application'); никогда
установите f1book, просто, удобно и легко, есть проблемы с новыми версиями

или если пишите промышленные проекты, за которые имеете ганорары купите Spreadsheet, есть отдельная версия без DevExpress. поддерживает все форматы.

оба варианты на много удобнее чем использовать сервера автоматизации MS Office

P.S.
я пробовал Excel от TMS ну как то у них есть всё, но моя оценка, всё кривое
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807218
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

и для скорости, формируете двумерный вариант массим, туда плюхаете все ваши строки и его печатаете, этот массив в F1Book или в SpreadSheet ну по крайней мере у меня подобный проект 40 столбцов и примерно 20 тыс сстрок с группировкой выводит моментально.


в F1book с группировкой сложнее
в SpreadSheet как в Excel
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807220
AleksR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно еще ZEXMLSS посмотреть, opensource
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807222
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorbk0010, ну есть уже Зачем бритву точить? Для оформления. CSV даст данные, но не форматирование.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807261
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorА потом одним махом этот CSV открть Екселем и затем навести красивости по шаблону (шрифт, цвета, форматы и т.п.)
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807298
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Ммм, серьезно? Вполне.
C использованием SIMD (там, где это требуется) скорость может вырасти раз в 10, а то и больше.

asutp2когда отчет генерируется в excel 20 минут, а через direct 5 секунд, а таких отчетов генерится вагон и маленькая тележка - то ВЕСЬМА существенно. Согласен.
У меня таких ситуаций не было, поэтому не вижу смысла переползать на другую схему.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807319
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис...
У меня таких ситуаций не было, поэтому не вижу смысла переползать на другую схему.
Конечно, если система уже настроена, отлажена и устраивает - менять не стоит.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39807606
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почта России уходит c MS Office: https://habr.com/ru/news/t/449856/

Новый пакет офисные файлы читать сможет, но про COM придется забыть.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #39809988
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если всё же брать OLE то можно выгружать именно построчно, а не поячеечно, или вообще целый регион.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
var
  RowData :OleVariant;
begin	
	qrZapros.Close;
	qrZapros.ParamByName('kod').Value:=DBLookupComboBox1.KeyValue;
	qrZapros.ParamByName('dat1').Value:=DBDateTimeEditEh3.Text;
	qrZapros.Open;

	if not qrZapros.IsEmpty then
	  begin
	   m:=1;
	   Update;
	   Cursor:=crHourGlass;
	   exl:=CreateOleObject('Excel.Application');
	   Workbook:=exl.Application.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'report.xls');
	   Sheet:=WorkBook.WorkSheets[1];
	   p:=qrZapros.FieldCount;
	   
	   RowData := VarArrayCreate([1, 1, 1, p], varVariant);
	   // Либо RowData := VarArrayCreate([1, RowCount, 1, p], varVariant); для выгрузки сразу прямоугольной области
	   
	   while not qrZapros.EOF do
		 begin
		   for j:=0 to p-1 do
			 RowData[1, j + 1] := qrZapros.Fields[j].Value;
			 // Либо RowData[m, j + 1] := qrZapros.Fields[j].Value; для выгрузки прямоугольной области
		  Sheet.Cells[m, j+2].Resize[, p].Value := RowData;
		  
		  inc(m);
		  qrZapros.Next;
		 end;
	// Либо Sheet.Cells[m+5, j+2].Resize[RowCount, p].Value := RowData;
	   exl.Application.Visible:=True;
	  end;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Быстрый экспорт в Excel
    #40039827
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллеги

из бесплатного для прямого формирования xlsx/docx без олей (open office xml)
только ZEXMLSS?
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40039902
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
коллеги

из бесплатного для прямого формирования xlsx/docx без олей (open office xml)
только ZEXMLSS?

Еще можно вручную сгенерить пару xml-ей, зазиповать их и переименовать zip в xlsx. Там простой формат. Я так и делаю для экселя, docx не разбирал, не нужен был.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40039919
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
andreymx
коллеги

из бесплатного для прямого формирования xlsx/docx без олей (open office xml)
только ZEXMLSS?

Еще можно вручную сгенерить пару xml-ей, зазиповать их и переименовать zip в xlsx. Там простой формат. Я так и делаю для экселя, docx не разбирал, не нужен был.
хмл тоже надо чем-то сгенерить
чтобы заголовки, рамки, цвета, форматы, шрифты, числа/даты/суммы и т.д.

у меня есть библиотека под Оле - выгружает гриды с этими всеми примочками
написали в 2005-м году, потом сопровождаю вот, дописываю. вполне быстрая и оптимизированная

Но всё думаю перейти на что-то прогрессивное, ибо оле на пару с экселем нет-нет, а потом возьмет да и нагадит
посмотрел бесплатную EPPLUS по c# - на вид многие методы как в оле.
Думал портировать свою функцию. Но для делфи такой же бесплатной не нашёл
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40039944
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
хмл тоже надо чем-то сгенерить
чтобы заголовки, рамки, цвета, форматы, шрифты, числа/даты/суммы и т.д.
Ну повозиться придется денек, а то и пару, это да.
Зато потом -проще добавлять новые фичи и исправлять ошибки, когда знаешь, где что как лежит.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40040074
pvv.pas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

fpspreadsheet

Прикладываю обёртку на fpc. Положите её в папку fpspreadsheet из репы самостоятельно, т.к. на форум не могу выложить архив из-за размера если её включаю. В проект делфи нужно включить два файла: Excel.DataSetProvider.Default.pas, Excel.DataSetProvider.Interfaces.pas.

Подключение модуля в делфи:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var
  ExportFromDataSet: function(AFileName: PWideChar; const ADataSetProvider: IExcelDataSetProvider; AFormat: Integer): Integer; stdcall;
  ImportToDataSet: function(AFileName: PWideChar; const ADataSetProvider: IExcelDataSetProvider): Integer; stdcall;

implementation

{$ifdef MSWINDOWS}
uses
    WinApi.Windows
  ;
{$endif}

const
  {$ifdef MSWINDOWS}
    EXCEL_LIB = 'Excel.FPSpreadSheet.dll';
  {$else}
    EXCEL_LIB = 'excel.fpspreadsheet.so.1';
  {$endif}

procedure InitFPSpreadSheet;
var
  LHandle: NativeInt;
begin
  // динамическая загрузка для возможности компиляции под линукс без её наличия в выходном каталоге, иначе линковщик не соберёт
  LHandle := LoadLibrary(EXCEL_LIB);
  ExportFromDataSet := GetProcAddress(LHandle, 'ExportFromDataSet');
  ImportToDataSet := GetProcAddress(LHandle, 'ImportToDataSet');
end;



Работает мгновенно без установленного Excel. Под линукс собирал Лазарь с помощью fpcupdeluxe, без каких либо проблем.
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40040078
pvv.pas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде приложил архив, но чего то не вижу его. Отдельно на яндекс диск закинул полный архив. вместе с fpspreadsheet
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40040480
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pvv.pas,

спасибо
посмотрю
...
Рейтинг: 0 / 0
Быстрый экспорт в Excel
    #40040481
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
посмотрел бесплатную EPPLUS по c# - на вид многие методы как в оле.
уже она платная, и вполне хорошо платная
https://www.epplussoftware.com/ru/LicenseOverview/
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый экспорт в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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