Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Excel 
:(
    Опции темы
IllusDolphin
  Дата 25.4.2004, 17:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пожалуйста, подскажите, как можно работать с экселем из Delphi, а то я пытался разобраться с компонентами , но у меня ничего не получилось. Нужно открыть приложение и записать в ячейки данные, а также получить данные из него...
  Вверх
NiJazz
Дата 25.4.2004, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



На вкладке Servers в Delphi есть компонент ExcelApplication. С него и начни.
PM MAIL   Вверх
IllusDolphin
Дата 25.4.2004, 19:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











NiJazz, я нашёл этот компонент, но мне так и не удалось загрузить с его помощью эксель, а тум более брать из него данные sad.gif... Если можно небольшой примерчик?

  Вверх
NiJazz
Дата 25.4.2004, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Кину исходник работы с Word. Можешь от него отталкиваться. И не забывай, что есть F1. smile.gif
Код
unit UWord1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls, OleServer, Word97, Word2000;

type
 TForm1 = class(TForm)
   RGAlighn: TRadioGroup;
   RGFont: TRadioGroup;
   Memo1: TMemo;
   Edit1: TEdit;
   BInDoc: TButton;
   BPreview: TButton;
   BPrint: TButton;
   BSave: TButton;
   Image1: TImage;
   BNew: TButton;
   BOpen: TButton;
   BWord: TButton;
   procedure BWordClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure BNewClick(Sender: TObject);
   procedure BInDocClick(Sender: TObject);
   procedure BSaveClick(Sender: TObject);
   procedure BPrintClick(Sender: TObject);
   procedure BPreviewClick(Sender: TObject);
   procedure BOpenClick(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 WordApplication1: TWordApplication;
 WordDocument1: TWordDocument;
 WordFont1: TWordFont;
 WordParagraphFormat1: TWordParagraphFormat;

implementation

{$R *.DFM}

uses Clipbrd,OleCtrls{Word_97_SRVR};

procedure Connect;
{Проверка наличия открытого документа}
begin
 if WordApplication1.Documents.Count = 0
  then begin
   Application.MessageBox('В Word нет открытого документа',
                          'Команда не выполнена',
                          MB_OK + MB_ICONEXCLAMATION);
   Abort;
  end;
{Соединение WordDocument1 с активным документом}
 WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
{Делаются доступными кнопки работы с документом}
 Form1.BInDoc.Enabled:=true;
 Form1.BPreview.Enabled:=true;
 Form1.BPrint.Enabled:=true;
 Form1.BSave.Enabled:=true;
end;

procedure TForm1.BWordClick(Sender: TObject);
begin
{Word делается видимым}
WordApplication1.Visible:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WordApplication1 := TWordApplication.Create(self);
WordApplication1.ConnectKind := ckNewInstance;
WordApplication1.AutoQuit := true;
{Если при начале работы в Word нет ни одного открытого документа,
то кнопки работы с документом делаются недоступными}
if WordApplication1.Documents.Count = 0
then begin
 BInDoc.Enabled:=false;
 BPreview.Enabled:=false;
 BPrint.Enabled:=false;
 BSave.Enabled:=false;
end;
WordDocument1 := TWordDocument.Create(self);
WordFont1 := TWordFont.Create(self);
WordParagraphFormat1 := TWordParagraphFormat.Create(self);
end;

procedure TForm1.BNewClick(Sender: TObject);
begin
{Создание в Word нового документа}
if(StrToInt(Copy(WordApplication1.Version,0,Pos('.',WordApplication1.Version)-1)))
 < 9
// if (GetVersion >= $80000000)
then
//для Word 97
 (WordApplication1.Documents as Word97.Documents).Add(EmptyParam,EmptyParam)
else
//для Word 2000
 (WordApplication1.Documents as Word2000.Documents).Add(EmptyParam,EmptyParam,
                                                        EmptyParam,EmptyParam);
Connect;
end;

procedure TForm1.BInDocClick(Sender: TObject);
var Direction:OleVariant;
begin
{Занесение в документ информации}
Connect;
{Пересылка в документ изображения из Image1}
WordApplication1.Selection.InsertAfter(' ' + #13);
Clipboard.Assign(Image1.Picture);
WordApplication1.Selection.Paste;
WordApplication1.Selection.InsertAfter(' ' + #13);

{Снятие выделения}
Direction:=wdCollapseEnd;
WordApplication1.Selection.Collapse(Direction);

{Включение в документ текста заголовка}
WordApplication1.Selection.InsertAfter(' ' + #13);
WordApplication1.Selection.InsertAfter(
   'Уважаемый ' + Edit1.Text +' !'+ #13);
{Установка курсива и выравнивание заголовка по середине}
WordFont1.ConnectTo(WordApplication1.Selection.Font);
WordFont1.Italic := 1;
WordParagraphFormat1.ConnectTo(
                 WordApplication1.Selection.ParagraphFormat);
WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
{Снятие выделения}
WordApplication1.Selection.Collapse(Direction);

WordApplication1.Selection.InsertAfter(' ' + #13);
WordApplication1.Selection.InsertAfter(Memo1.Text);
WordApplication1.Selection.InsertAfter(' ' + #13);

{Установка шрифта и выравнивание основного текста}
WordFont1.ConnectTo(WordApplication1.Selection.Font);
WordParagraphFormat1.ConnectTo(
                 WordApplication1.Selection.ParagraphFormat);
if RGFont.ItemIndex > 1
 then WordFont1.Bold := 1
 else WordFont1.Bold := 0;
if RGFont.ItemIndex mod 2 = 1
 then WordFont1.Italic := 1
 else WordFont1.Italic := 0;

 case RGAlighn.ItemIndex of
  0: WordParagraphFormat1.Alignment := wdAlignParagraphLeft;
  1: WordParagraphFormat1.Alignment := wdAlignParagraphRight;
  2: WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
  3: WordParagraphFormat1.Alignment := wdAlignParagraphJustify;
 end;
{Снятие выделения}
WordApplication1.Selection.Collapse(Direction);
{Включение в документ текста заключительной строки}
WordApplication1.Selection.InsertAfter('С уважением');
{Установка курсива и выравнивание строки по середине}
WordFont1.ConnectTo(WordApplication1.Selection.Font);
WordFont1.Italic := 1;
WordParagraphFormat1.ConnectTo(
                 WordApplication1.Selection.ParagraphFormat);
WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
{Снятие выделения}
WordApplication1.Selection.Collapse(Direction);
end;

procedure TForm1.BSaveClick(Sender: TObject);
var Dial: OleVariant;
begin
{Диалог открытия файла}
Connect;
Dial:=wdDialogFileSaveAs;
WordApplication1.Dialogs.Item(Dial).Show(EmptyParam);
end;

procedure TForm1.BPrintClick(Sender: TObject);
{Печать}
var Dial: OleVariant;
begin
Connect;
WordApplication1.Visible:=true;
Dial:=wdDialogFilePrint;
WordApplication1.Dialogs.Item(Dial).Show(EmptyParam);
end;

procedure TForm1.BPreviewClick(Sender: TObject);
begin
{Предварительный просмотр}
Connect;
WordDocument1.PrintPreview;
WordApplication1.Visible:=true;
end;

procedure TForm1.BOpenClick(Sender: TObject);
{Открытие файла}
var Dial: OleVariant;
begin
WordApplication1.Visible := true;
Dial:=wdDialogFileOpen;
if WordApplication1.Dialogs.Item(Dial).Show(EmptyParam) = -1
 then Connect;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
WordApplication1.Free;
WordDocument1.Free;
WordFont1.Free;
WordParagraphFormat1.Free;
end;

end.

PM MAIL   Вверх
Medved
Дата 26.4.2004, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



А в первую очередь надо бы заглянуть в FAQ (Off-Line, On-Line). Немало копий поломано на этой теме...


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Akella
Дата 26.4.2004, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Поищи на форуме, я недавно давао огромный пример работы с Excel.
Если не найдешь, то скажи, я опять выложу его сюда.
PM MAIL   Вверх
Illusion Dolphin
Дата 26.4.2004, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Всем большое спасибо, просто я тогда был не дома, поэтому были некоторые проблемы... Ответы нашёл в Off-Line FAQ...


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
L///
Дата 6.5.2004, 13:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите пожалуйста.
Скопировал в Exl данные, пытаюсь их форматировать, а ничего не получается. Ячейки никак не изменяются - что делать?
  Вверх
Akella
Дата 6.5.2004, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата
Помогите пожалуйста.
Скопировал в Exl данные, пытаюсь их форматировать, а ничего не получается. Ячейки никак не изменяются - что делать?


Каким образом ты пытаешься форматировать?
Опиши более подробно свои дейсвия и виложи сюда свой код.
PM MAIL   Вверх
Cашенька(ученица)
Дата 28.5.2004, 00:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Подскажите!Какую функцию применять , чтобы в ячейке сумировались единичные буквы,находящиеся в др. ячейках.И чтобы если возле них нет точки,то при сумме возле каждой была точка.
Заранее благодарна!


  Вверх
Akella
Дата 28.5.2004, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Уважаемая Сашенька, чесно говря я не понял вопроса
PM MAIL   Вверх
Georg4
Дата 28.5.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Опять Ексел!!!
А меня ещё тут осуждают что я выдавал несколько лишних раз статью о пользовании им!!!


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Cашенька(ученица)
Дата 28.5.2004, 15:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Еще раз пожалуста! У меня задача: в таблице,в первых трех ячейках пишется - фамилия,имя,отчество.При том вместо имени и отчества,могут быть записаны инициалы , а после них могут стоять точки , а могут и не стоять.
Надо зделать чтобы в 4-ой ячейке были собраны вместе фамилия имя и отчество или инициалы , а после инициалов в любом случае должна стоять точка.И четвертая ячейка должна автоматически копироваться на другом листе.( А еще может подскажете какой-нибудь сайт для тех кто учит ехсеl ).
Заранее благодарна!!!
  Вверх
Albinos_x
Дата 28.5.2004, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Смотри тему Excel, там я привожу пример smile.gif


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Georg4
Дата 29.5.2004, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

Репутация: 0
Всего: 10



Вот именно. Давайте без велосипедов. Была уже куча инфы на форуме, просто нужно поиском как отцы и деды искали. Он у нас, слава Богу, работает хорошо.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.