Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

Перекинуть фильтрованные данные из табла в excel   Найти похожие ветки 

 
IrviS   (2002-12-14 19:30) [0]

Необходим переброс данных из фильтрованных таблиц в ексель. с учетом выбранных столбцов юзером.

В СтрингГриде есть колонка с чекбоксами, где при помощи них юзер выбирает необходимые поля таблицы. В гриде перечислены поля всех таблиц (3 - шт).




procedure TMain.MicrosoftExel1Click(Sender: TObject);
var nc, mc: Integer;
exl: OLEVariant;
x,WorkBook,Sheet : Variant;
begin
exl := CreateOleObject("Excel.Application");
WorkBook := exl.Application.WorkBooks.Add;
exl.Workbooks[1].WorkSheets[1].Name:="Otchet";
Sheet := WorkBook.WorkSheets[1];
x:=exl.Workbooks[1].WorkSheets["otchet"].Columns;
x:=exl.Workbooks[1].WorkSheets["Otchet"].Rows;
x.Rows[1].Font.Name:="Verdana";
x.Rows[1].Font.Size:=10;
Sheet.Cells[1,1]:="Theke: Результат";
Sheet.Cells[1,1].Borders[xlEdgeBottom].Weight:=2;
Sheet.Cells[1,2].Borders[xlEdgeBottom].Weight:=2;
Sheet.Cells[1,3].Borders[xlEdgeBottom].Weight:=2;

Sheet.Cells[4,1].Borders[xlEdgeLeft].Weight:=3;

for mc:=0 to StringGrid2.RowCount do begin

if StringGrid2.Cells[1,mc]="+" then begin

Sheet.Cells[4,mc+1].Borders[xlEdgeTop].Weight:=3;
Sheet.Cells[4,mc+1].Borders[xlEdgeBottom].Weight:=3;
Sheet.Cells[4,mc+1]:=StringGrid2.Cells[0,mc];

for nc:=1 to taGemain.RecordCount do begin
Sheet.Cells[nc+4,mc+1]:=taGemain.Fields[mc+1].AsString;
taGemain.Next;end;

end;

end;

exl.Visible := true;

end;


 
IrviS   (2002-12-14 19:59) [1]

лучше объясню
1. Есть 3-и шт таблицы (в которых всякой хр..ени)
2. Есть грид у которого в левом столбце перечислены все поля тех таблиц
3. Следующий столбец с чекбоксами
4. За ним столбец с пустыми строками для заполнения пареметров фильтра
5. С помощью чекбоксов будут отображаться колонки в отчете ексела.


 
IrviS   (2002-12-15 09:45) [2]

Попробывал сделать так. Вроде работает.
Но все же хочу чтоб кто - нибудь проверил бы.
Думаю что мозги мои от не досыпа совсем таво.

ConfigFile:=TIniFile.Create("settings\list.ini");
for mc:=0 to StringGrid2.RowCount do begin

if StringGrid2.Cells[1,mc]="+" then begin
xc:=xc+1;
Sheet.Cells[4,xc].Borders[xlEdgeTop].Weight:=3;
Sheet.Cells[4,xc].Borders[xlEdgeBottom].Weight:=3;
Sheet.Cells[4,xc]:=StringGrid2.Cells[0,mc];


if ConfigFile.ReadString("List",StringGrid2.Cells[0,mc],"")<>"" then begin
namefield:=ConfigFile.ReadString("List",StringGrid2.Cells[0,mc],"");
try
taGemain.First;
for nc:=1 to taGemain.RecordCount do begin
Sheet.Cells[nc+4,xc]:=taGemain.FieldByName(namefield).AsString;
taGemain.Next; end;
except
try
taFunktion.First;
Sheet.Cells[nc+4,xc]:=taFunktion.FieldByName(namefield).AsString;
except
end;
end;
end;
end;



 
Карелин Артем   (2002-12-16 11:16) [3]

1! Sheet.Cells[nc+4,xc]:= будет работать медленно. Делай через буфер или вариантный массив. Подробнее смотри на delphikingdom.com "По волнам интеграции".
2! Некоторые авторы жаловались на неустойчивость работы старых (9Х) виндов при большом количестве вызовов OLE. Не наблюдал...
3! Не забудь про пакеты обновлений для офиса. В 9Х отсутствие обновлений ведет к нехватке ресурсов. Нужно для 97 и 2000 офисов.
4! Освобождай ексель.
5! Если уж делаешь вставку значений через cells, то установка ScreenUpdating в False добавит скорости. Только потом обратно в True установи. :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
3-24796
Elka
2002-12-14 08:49
2003.01.09
Сохранение колонок в DBGridEh 2.5


14-25065
Top Gun
2002-12-19 19:55
2003.01.09
Тормоза в Мафии


14-25084
DeMoN-777
2002-11-03 11:31
2003.01.09
Скриншоты рабочих столов


1-24958
Probas
2002-12-26 22:18
2003.01.09
Общая


1-24954
Ser12
2002-12-25 14:29
2003.01.09
Люди, кто знает функцию, которая возвращает количество





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский