Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.11;
Скачать: CL | DM;

Вниз

Dbgrid и Excel   Найти похожие ветки 

 
P0tia   (2003-08-21 11:56) [0]

Как перенести все фильтрованные данные в excel


 
Vlad   (2003-08-21 12:01) [1]

1) Создать объект Excel - CreateOleObject("Excel.Application")
2) Создать массив типа вариант - VarArrayCreate, куда запихнуть твой набор данных.
3) Положить этот массив на лист Excel, путем присваивания данного массива объекту Range

Хотя может и проще можно, не знаю.


 
DenK_vrtz   (2003-08-21 12:06) [2]

Так же как и нефильтрованные


 
P0tia   (2003-08-21 13:02) [3]

Если можно напиши код, так легче понять.


 
SiJack   (2003-08-21 13:17) [4]

Попробуй EhLib


 
Vlad   (2003-08-21 13:26) [5]

http://delphimaster.net/view/1-1061351355/

Там вроде правильно, только не с помощью массива, немного по-другому.


 
P0tia   (2003-08-21 14:53) [6]

Спасибо, а вы не могли бы дописать код как открывается Excel и как туда передать переменную


 
malamba   (2003-08-21 15:02) [7]

Почему-то я не советую пользоваться CreateOleObject
Лучше (быстрее) использовать встроенные серверы Excel с закладки Servers.

Вот под руку попался код:

sTemplatePath:= sProgrmPath + "Teplates.xls";

FormGlav.ExcelApplication.Workbooks.Add(sTemplatePath,0);
//FormGlav.ExcelApplication.Workbooks.Open(sTemplatePath,EmptyParam,Em ptyParam,
//EmptyParam,EmptyParam,EmptyParam,true,EmptyParam,EmptyParam,
//EmptyParam,EmptyParam,EmptyParam,false,0);
// Открываем шаблон и связываем его с имеющимся компонентом
FormGlav.ExcelApplication.Visible[0]:=false;
FormGlav.ExcelWorkbook.ConnectKind:=ckAttachToInterface;

IXlsWorkBook:= FormGlav.ExcelApplication.ActiveWorkbook;
FormGlav.ExcelWorkbook.ConnectTo(IXlsWorkBook);

ProgressBarProtocol.StepIt;
//**************************************** лист титульний2 *********************
IXlsSheet:= FormGlav.ExcelWorkbook.Worksheets.Item["титульний2"] as Excel2000._Worksheet;
IXlsSheet.Activate(0);


sTemp:= sNomerProtText + " від " + DateToStr(FormProtocol.DateTimeProtocol.Date) + " р.";
BufferToClipboard(sTemp);

Тут я использую не Cell.Value:=
а вставку из буфера обмена. Так быстрее.


 
Vlad   (2003-08-21 15:12) [8]

Там же написано :

Excel := CreateOleObject("Excel.Application"); //Создаем объект Excel
Excel.Visible:=True; //Делаем его видимым
Excel.WorkBooks.Add; //Создаем рабочую книгу

...............

Excel.ActiveSheet.Cells[i,j].FormulaR1C1 :=
Query1.Fields[i].AsString; // Записываем в нужную ячейку переменную из Query1

Единственное, лучше пользоваться не FormulaR1C1 а Value

Читайте код внимательнее.


 
P0tia   (2003-08-21 16:06) [9]

Где можно найти faq по excel и delphi


 
Vlad   (2003-08-21 16:17) [10]

Вот ссылка на FAQ
там еще несколько примеров использования Excel
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622198&n=23

А что опять у тебя не получается ?
Может опишешь конкретную проблему ?


 
P0tia   (2003-08-21 16:24) [11]

У меня такая проблема.
Есть таблица (фильтрованная), из нее нужно просто перегнать данные в excel( чтобы он создал новый лист, скопировал данные из таблицы и потом , уже в excele ты их распечатоваешь или сохраняешь).

Vlad, что можешь сказать?


 
Vlad   (2003-08-21 16:37) [12]

Ок. Давай по порядку.

1)Ты вот это делать пробовал ? Excel запускается ?

Excel := CreateOleObject("Excel.Application"); Excel.Visible:=True;
Excel.WorkBooks.Add;

2) Если 1 успешно, то попробуй перенести данные из таблицы в Excel
for j:=1 to Table1.RecordCount do begin
for i:=1 to Table1.Fields.Count do
Excel.ActiveSheet.Cells[i,j].Value :=
Table1.Fields[i].AsString;
end;
Table1.Next;
end;

Ну я так, наспех, мож где какая ошибочка и закралась...


 
P0tia   (2003-08-21 17:05) [13]

Первое не проходит, точнее программа запускается, а при нажатии вылетает EOleSysError Недопустимая строка с указанием класса


 
P0tia   (2003-08-21 17:08) [14]

Не, извени все нормально это я ошибся. Сейчас второе попробую


 
P0tia   (2003-08-21 17:12) [15]

Все супер, VLAD, Спасибо тебе большое. Если еще вопросы будут, поможешь?


 
Vlad   (2003-08-21 17:14) [16]

Excel на компе вобще установлен ?
Либо допустил синтаксическую ошибку в "Excel.Application"
или.... тогда не знаю.


 
Vlad   (2003-08-21 17:15) [17]

Ок. без проблем. :-)


 
P0tia   (2003-08-21 18:19) [18]

Vlad, к тебе еще два вопроса:
1. Как сделать чтобы
for i:=0 to DataModule2.Table1.FieldCount-1 do
Excel.ActiveSheet.Cells[1,i+1].value := DataModule2.Table1.Fields[i].DisplayName;

записалась жирным шрифтом?
2. Чтобы колонки в которые не вмещаются названия сами раздвегались?


 
P0tia   (2003-08-21 18:29) [19]

И еще два вопросика
1. Как можно записывать на 2-ой лист?
2. И можно ли в excel засунуть диограмму?


 
Vlad   (2003-08-21 19:07) [20]

Отвечаю по порядку.
1) Excel.ActiveSheet.Cells[1,i+1].Font.Bold:=true;
2) Excel.ActiveSheet.Cells.EntireColumn.AutoFit; //автоматически устанавливает размер колонок по длинне самого большего эл-та.
Другой вариант: Excel.ActiveSheet.Columns[i].columnwidth:=150; //ручная установка шинины столбца

3) Excel.Workbooks[1].WorkSheets[1].Cells[1,1].Value:="qqq";
Короче говоря как к рабочим книгам, так и листам обращаешься по индексу.
4) Не знаю, не пробовал.

И еще маленький совет. Открой в Excel"e редактор VisualBasic и почитай хелп, по объектам WorkBook, WorkSheet, Application.



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

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-33797
Tornado
2003-08-21 13:36
2003.09.11
Знатокам InstallShield


1-33640
WASYA
2003-08-31 10:17
2003.09.11
InstallShield


11-33534
Alexander
2002-12-29 21:47
2003.09.11
Как реализовать такой код на KOL?


14-33754
Sheng
2003-08-24 17:24
2003.09.11
Описание формата *.kar


14-33725
Palladin
2003-08-25 13:29
2003.09.11
UML





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