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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
14-33758
reticon
2003-08-24 12:09
2003.09.11
Использование АОН на линии с блокиратором


14-33741
Феликс
2003-08-25 00:06
2003.09.11
А вот мой форум....


1-33587
Andrushk
2003-08-28 09:34
2003.09.11
работа с COM


1-33599
GSergei
2003-09-01 15:11
2003.09.11
Печать


1-33665
AndreySoft
2003-08-27 23:41
2003.09.11
Как перенести текст на следующую строку в RadioGroup





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