![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Dbgrid и Excel
P0tia © (2003-08-21 11:56:00)
Как перенести все фильтрованные данные в excel
Vlad (2003-08-21 19:07:00) [1]
Отвечаю по порядку.
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.
P0tia (2003-08-21 18:29:00) [2]
И еще два вопросика
1. Как можно записывать на 2-ой лист?
2. И можно ли в excel засунуть диограмму?
P0tia (2003-08-21 18:19:00) [3]
Vlad, к тебе еще два вопроса:
1. Как сделать чтобы
for i:=0 to DataModule2.Table1.FieldCount-1 do
Excel.ActiveSheet.Cells[1,i+1].value := DataModule2.Table1.Fields[i].DisplayName;
записалась жирным шрифтом?
2. Чтобы колонки в которые не вмещаются названия сами раздвегались?
Vlad (2003-08-21 17:15:00) [4]
Ок. без проблем. :-)
Vlad (2003-08-21 17:14:00) [5]
Excel на компе вобще установлен ?
Либо допустил синтаксическую ошибку в "Excel.Application"
или.... тогда не знаю.
P0tia (2003-08-21 17:12:00) [6]
Все супер, VLAD, Спасибо тебе большое. Если еще вопросы будут, поможешь?
P0tia (2003-08-21 17:08:00) [7]
Не, извени все нормально это я ошибся. Сейчас второе попробую
P0tia (2003-08-21 17:05:00) [8]
Первое не проходит, точнее программа запускается, а при нажатии вылетает EOleSysError Недопустимая строка с указанием класса
Vlad (2003-08-21 16:37:00) [9]
Ок. Давай по порядку.
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 16:24:00) [10]
У меня такая проблема.
Есть таблица (фильтрованная), из нее нужно просто перегнать данные в excel( чтобы он создал новый лист, скопировал данные из таблицы и потом , уже в excele ты их распечатоваешь или сохраняешь).
Vlad, что можешь сказать?
Vlad (2003-08-21 16:17:00) [11]Вот ссылка на FAQ
там еще несколько примеров использования Excel
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622198&n=23
А что опять у тебя не получается ?
Может опишешь конкретную проблему ?
P0tia (2003-08-21 16:06:00) [12]
Где можно найти faq по excel и delphi
Vlad (2003-08-21 15:12:00) [13]
Там же написано :
Excel := CreateOleObject("Excel.Application"); //Создаем объект Excel
Excel.Visible:=True; //Делаем его видимым
Excel.WorkBooks.Add; //Создаем рабочую книгу
...............
Excel.ActiveSheet.Cells[i,j].FormulaR1C1 :=
Query1.Fields[i].AsString; // Записываем в нужную ячейку переменную из Query1
Единственное, лучше пользоваться не FormulaR1C1 а Value
Читайте код внимательнее.
malamba (2003-08-21 15:02:00) [14]
Почему-то я не советую пользоваться 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:=
а вставку из буфера обмена. Так быстрее.
P0tia (2003-08-21 14:53:00) [15]
Спасибо, а вы не могли бы дописать код как открывается Excel и как туда передать переменную
Vlad (2003-08-21 13:26:00) [16]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1061351355&n=0
Там вроде правильно, только не с помощью массива, немного по-другому.
SiJack (2003-08-21 13:17:00) [17]
Попробуй EhLib
P0tia (2003-08-21 13:02:00) [18]
Если можно напиши код, так легче понять.
DenK_vrtz (2003-08-21 12:06:00) [19]
Так же как и нефильтрованные
Vlad (2003-08-21 12:01:00) [20]
1) Создать объект Excel - CreateOleObject("Excel.Application")
2) Создать массив типа вариант - VarArrayCreate, куда запихнуть твой набор данных.
3) Положить этот массив на лист Excel, путем присваивания данного массива объекту Range
Хотя может и проще можно, не знаю.