Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
Вроде инфы полно..но проблема в том, что она описывает работу с не открытым файлом, а с зарытым(или я просто чего-то недопонимаю).


Задача.
1 В уже открытый Excel файл на определенный лист надо время от времени вставлять-отправлять данные из Delphi. С закрытым файлом через OLE проблем нет, но как это сделать если документ открыт?.
17 май 20, 18:06    [22134616]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49980

Точно так же, только использовать GetOleObject() вместо Create.

Posted via ActualForum NNTP Server 1.5

17 май 20, 18:11    [22134617]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
Dimitry Sibiryakov

Точно так же, только использовать GetOleObject() вместо Create.
Спасибо!!! Елки так просто оказалось, надо было убрать create... Я вчера весь день убил пытаясь понять...
17 май 20, 18:42    [22134625]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
Dimitry Sibiryakov, Возник еще вопрос. А если открыты несколько файлов, то как обратится к нужному, а не к первому?
23 май 20, 20:26    [22138312]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49980

Перебрать все, посмотреть который из них "нужный".

Posted via ActualForum NNTP Server 1.5

23 май 20, 22:05    [22138352]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
Dimitry Sibiryakov

Перебрать все, посмотреть который из них "нужный".

Перебрать и сравнить название и по ID выбрать нужный. Я правильно понял?
24 май 20, 11:01    [22138446]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
ART-CODE
Member

Откуда:
Сообщений: 1082
Я бы сделал макрос в файле Excel, который сам проверяет обновления в источнике данных, получает их и показывает.
А программа на Delphi (или чем угодно) подготавливает обновления в этом источнике.
Тогда вообще нет проблемы поиска в какой открытий файл отправлять.
Каждый открытый файл сам "знает" какой источник предназначен для него, и ждет там изменения.
Источником данных может быть как таблица на с SQL сервере, так и простой CSV файл на диске.
Кому что удобнее.
24 май 20, 12:51    [22138498]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
Dimitry Sibiryakov,

Вас не затруднить примерчик.

FindMyWorkBook(name)

WorkSheet := WorkBook.WorkSheets.Item['отчет'];
24 май 20, 15:27    [22138557]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
m.medvedb,
function WorkBookIndex(WorkBookName: Ansistring): integer;
var
  i, n: integer;
begin
  //проверка на наличие книги с этим именем
  n := 0;
  if VarIsEmpty(Excel) = false then
    for i := 1 to Excel.WorkBooks.Count do
      if Excel.WorkBooks[i].FullName = WorkBookName then
      begin
        n := i;
        break;
      end;
  WorkBookIndex := n;
end;

procedure TForm1.Button11Click(Sender: TObject);
var
    EXWorkSheets : Sheets;
      EXSheet : Variant;
    SheetName : OleVariant;
    i: integer;
begin
TLog.Lines.add(IntToStr( WorkBookIndex('D:\3.xlsx')));
end;


Почему данная функция возвращает всегда 0
24 май 20, 15:41    [22138559]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49980

m.medvedb
Почему данная функция возвращает всегда 0

Пошаговая отладка подскажет.

Posted via ActualForum NNTP Server 1.5

24 май 20, 16:38    [22138570]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
alekcvp
Member

Откуда:
Сообщений: 2035
m.medvedb,

Как минимум я бы делал
if AnsiSameText(Excel.WorkBooks[i].FullName, WorkBookName) then ...
И почему именно AnsiString?..

Сообщение было отредактировано: 24 май 20, 17:18
24 май 20, 17:19    [22138581]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
m.medvedb
Member

Откуда:
Сообщений: 110
alekcvp
m.medvedb,

Как минимум я бы делал
if AnsiSameText(Excel.WorkBooks[i].FullName, WorkBookName) then ...
И почему именно AnsiString?..


Это готовая функция не моя.
взял тут https://delphisources.ru/pages/faq/base/excel_books_sheets.html
24 май 20, 17:55    [22138596]     Ответить | Цитировать Сообщить модератору
 Re: данные из Delphi в открытый Excel  [new]
alekcvp
Member

Откуда:
Сообщений: 2035
m.medvedb
Это готовая функция не моя.
взял тут https://delphisources.ru/pages/faq/base/excel_books_sheets.html

https://www.gunsmoker.ru/2010/05/90.html
24 май 20, 18:18    [22138599]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить