powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый экспорт в Excel
25 сообщений из 54, страница 2 из 3
Быстрый экспорт в 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
25 сообщений из 54, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый экспорт в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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