Главная страница
    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.012 c
1-24940
Def
2002-12-26 13:58
2003.01.09
Бегущая строка


3-24819
СергейКо
2002-12-16 14:57
2003.01.09
Записи в XML таблице не удаляются


8-24984
Nikolai_S
2002-09-23 12:31
2003.01.09
Печать TMetafile на черно-белом принтере


1-24959
Дурак2
2002-12-26 07:33
2003.01.09
или я не прав или как


6-24997
Граф
2002-11-06 22:15
2003.01.09
регламентировать доступ к shares через логин-пароль в ХР





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский