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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel + Delphi 
:(
    Опции темы
chiffa
Дата 16.7.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



Всем привет. С Делфи работаю относительно недавно, но вот возникла необходимость подружить программку с Екселем. нашел в инете такой примерчик:

Код

Excel := CreateOleObject('Excel.Application');    //Инициализацию переменной Excel в простейшем случае
Excel.Workbooks.Open['1.xls', 0, True];
s:=Excel.Range['b2'];
Form2.Edit1.Text:=s;


впринципе все работает, но в документе много листов, как делаать переход между листами? Зарание спасибо smile
PM MAIL   Вверх
Rodman
Дата 16.7.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



ты тут был?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
chiffa
  Дата 16.7.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



пасиба. пытался там разобрать не очень понимаю с чего должен начинаться код.... как инициализировать ексель. Пишу 

Код

icid:=LOCALE_SYSTEM_DEFAULT;
ExcelApplication1.ConnectKind:=ckNewInstance;
ExcelApplication1.AutoQuit:=true;
// делаем видимым Excel
ExcelApplication1.Visible[icid]:=true;
ExcelApplication1.AutoConnect:=true;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,icid));
ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.ActiveSheet as ExcelWorkSheet);



[Pascal Error] Unit2.pas(52): E2003 Undeclared identifier: 'ckNewInstance'
[Pascal Error] Unit2.pas(53): E2066 Missing operator or semicolon
[Pascal Error] Unit2.pas(55): E2066 Missing operator or semicolon
[Pascal Error] Unit2.pas(55): E2016 Array type required
[Pascal Error] Unit2.pas(56): E2066 Missing operator or semicolon
[Pascal Error] Unit2.pas(57): E2003 Undeclared identifier: 'ExcelWorkbook1'
PM MAIL   Вверх
chiffa
Дата 17.7.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



и непонятно как переходить по страницам....
PM MAIL   Вверх
Rodman
Дата 17.7.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Цитата(chiffa @  16.7.2007,  16:09 Найти цитируемый пост)
как инициализировать ексель

из DRKB
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant;
   TemplateFile : String;
   BeginCol, BeginRow, i, j : integer;
   RowCount, ColCount : integer;
begin
BeginCol := 1;
BeginRow := 5;
RowCount := 100;
ColCount := 50;
 
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Application.EnableEvents := false;
Workbook := ExcelApp.WorkBooks.Add;
ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
for I := 1 to RowCount do
   for J := 1 to ColCount do
     ArrayData[I, J] := J * 10 + I;
Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow  + RowCount - 1, BeginCol +
ColCount - 1];
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
Range.Value := ArrayData;
ExcelApp.Visible := true;
end;

end.

Цитата(chiffa @  17.7.2007,  08:07 Найти цитируемый пост)
и непонятно как переходить по страницам.... 

надо через свойство Active - как найду выложу!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
chiffa
Дата 17.7.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



огромное спасибо! а как можно получить количество листов в документе?
PM MAIL   Вверх
Rodman
Дата 17.7.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Цитата(chiffa @  17.7.2007,  09:50 Найти цитируемый пост)
как можно получить количество листов в документе? 

ну ты можешь просто проверять на активность, т.е. если нельзя установить активноть - лист не существует!

почитай
PM MAIL WWW Skype GTalk YIM MSN   Вверх
chiffa
Дата 17.7.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



еще раз спасибо! буду читать!

Добавлено через 9 минут и 19 секунд
пытаюсь добавить новую книгу как описано в той ссылке что ты дал 

Код

XL.Workbooks.Add('1.xls', lcid);


выдает ошибку:

[Pascal Error] Unit2.pas(69): E2003 Undeclared identifier: 'XL'
PM MAIL   Вверх
chiffa
Дата 17.7.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -1



Перехожу по листам таким образом (надо выделить ячейки)
Код

Excel.WorkSheets[2].Range['C8'].Select;


если делаю 
Код

Excel.WorkSheets[3].Range['C8'].Select;


выдает: Project Project1.exe raised exception class EoleException with message "Медот Select из класса Range завершен неверно". лист присутствует 100%

Это сообщение отредактировал(а) chiffa - 17.7.2007, 15:21
PM MAIL   Вверх
Rodman
Дата 17.7.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Цитата(chiffa @  17.7.2007,  10:53 Найти цитируемый пост)
[Pascal Error] Unit2.pas(69): E2003 Undeclared identifier: 'XL' 

ну блин - не обьявил!
Цитата(chiffa @  17.7.2007,  14:20 Найти цитируемый пост)
выдает: Project Project1.exe raised exception class EoleException with message "Медот Select из класса Range завершен неверно". лист присутствует 100%

ну порыскай.. я же говрю через Activate или Active надо делать!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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