Как создать 3 ексель-файла одновременно
Модераторы: m0p3e, edward_K, Модераторы
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как создать 3 ексель-файла одновременно
Поищите на форуме. Обычно матрицу создают на небольшое кол-во строк - типа 100 или 1000(в зависимости от предполагаемого объема) и каждые 100 строк пишут в файл и пересоздают ьатрицу. Другой вариант - сначала посчитать скока надо и создать матрицу под это кол-во строк. Писать за границу созданной матрицы бесполезно.
Re: Как создать 3 ексель-файла одновременно
Обычно пишу в таблицу в памяти и матрица создается через RecordsInTable().
А ведь в моем варианте ExcelLib было динамическое увеличение матрицы в высоту. Зарезали редиски
А ведь в моем варианте ExcelLib было динамическое увеличение матрицы в высоту. Зарезали редиски
Re: Как создать 3 ексель-файла одновременно
Матрицу я пересоздам, но получится, что записывать в файл я должна буду каждый раз все в тот же xls-файл, но уже со смещением, т.е., первый экземпляр матрицы с 1-й строки, второй - со 101-й.Обычно матрицу создают на небольшое кол-во строк - типа 100 или 1000(в зависимости от предполагаемого объема) и каждые 100 строк пишут в файл и пересоздают матрицу
А мне это надо делать с тремя разными матрицами.
Не понятно как каждую из них связывать с разными файлами, и записывать данные в разные файлы, да еще и не с первой ячейки, а все ниже и ниже.
Код: Выделить всё
procedure writeToExcel(_nM: word);
{ var j: word;
_kolRow:=100;
if _row[_nM]<_kolRow
then _row[_nM]:=_row[_nM]+1
else { j:=_factor[_nM]*_kolRow+1;
if not xlWriteMatrixToExcelex(_matrix[_nm],j,1) message('Не могу записать матрицу '+string(_nM));
if not xlSaveAsWorkBook(_nM,_xlsfileName[_nM]) message('Не могу сохранить');
xlFreeMatrixex(_matrix[_nm]);
_factor[_nM]:=_factor[_nM]+1; _row[_nM]:=1;
}
}
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как создать 3 ексель-файла одновременно
Да выгрузите Вы однажды все из БД во временную таблицу Ваш базовый набор данных.
Потом обходите его столько раз сколько нужно, пересоздавая матрицу и записывая в тот файл который нужно.
Потом обходите его столько раз сколько нужно, пересоздавая матрицу и записывая в тот файл который нужно.
Re: Как создать 3 ексель-файла одновременно
Нда, придется опять через временные таблицы.
Но, блин, Галактика..... других слов нет.
Но, блин, Галактика..... других слов нет.
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как создать 3 ексель-файла одновременно
У Вас там десятки/сотни тысяч записей выгружаются ? или в чем проблема ?
А так да... XlCreateMatrix ,насколько я понимай ,может быть одна объявлена. Если у Вас будет разный набор данных на вывод - придется три раза матрицу делать.
Хотя может через объекты можно попробовать. Т.е. сделать 3 объекта(для 3 х файлов.). В них методы иннициализации экселя (В каждом объекте свой xlCreateExcelWithTemplate где будите открывать один из 3 шаблонов), методы записи нужной информации и закрытие. ну и в основном модуле ,в цикле по данным сразу пихать инфу в 3 разных места.
А так да... XlCreateMatrix ,насколько я понимай ,может быть одна объявлена. Если у Вас будет разный набор данных на вывод - придется три раза матрицу делать.
Хотя может через объекты можно попробовать. Т.е. сделать 3 объекта(для 3 х файлов.). В них методы иннициализации экселя (В каждом объекте свой xlCreateExcelWithTemplate где будите открывать один из 3 шаблонов), методы записи нужной информации и закрытие. ну и в основном модуле ,в цикле по данным сразу пихать инфу в 3 разных места.
Re: Как создать 3 ексель-файла одновременно
Проблема в том, что ночная выгрузка будет идти в автоматическом режиме, ежедневно.
На текущий момент записей в каждой таблице будет по несколько тысяч.
База растет, количество выгруженных записей будет также увеличиваться.
Я заранее определяю размер матриц с запасом, но однажды все равно может возникнуть переполнение...
Или уж сразу определить размер на 2 порядка больший ?
На текущий момент записей в каждой таблице будет по несколько тысяч.
База растет, количество выгруженных записей будет также увеличиваться.
Я заранее определяю размер матриц с запасом, но однажды все равно может возникнуть переполнение...
Или уж сразу определить размер на 2 порядка больший ?
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как создать 3 ексель-файла одновременно
если это ночью и никто не работает с тему таблицами ,которыми Вы оперируете в своем алгоритме, то можно заранее вычислять сколько будет записей для матрицы :
- в случае mssql или oralce платформы sql select count(*) from ...where....
- в случае битрива смотрите в документации по vip "вложенный запрос" там тоже можно count(*) использовать
- в случае mssql или oralce платформы sql select count(*) from ...where....
- в случае битрива смотрите в документации по vip "вложенный запрос" там тоже можно count(*) использовать
Re: Как создать 3 ексель-файла одновременно
у нас первасив, заранее посчитать можно только перегрузкой во временные таблицы (простым запросом не обойтись), а хотелось обойтись без двойного прохода.
Последний раз редактировалось s2176 24 сен 2014, 13:17, всего редактировалось 1 раз.
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как создать 3 ексель-файла одновременно
"- в случае битрива смотрите в документации по vip "вложенный запрос" там тоже можно count(*) использовать" (с)
Re: Как создать 3 ексель-файла одновременно
В случает первасива это и будет второй проход.Den писал(а):"- в случае битрива смотрите в документации по vip "вложенный запрос" там тоже можно count(*) использовать" (с)
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как создать 3 ексель-файла одновременно
В любом случае будет "второй проход" независимо от платформы -это же запрос к данным. Другое дело на sql-платформах это более эффективно будетLaaLaa писал(а):В случает первасива это и будет второй проход.Den писал(а):"- в случае битрива смотрите в документации по vip "вложенный запрос" там тоже можно count(*) использовать" (с)