Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2013, 21:12
maxfox123 maxfox123 вне форума
Прохожий
 
Регистрация: 07.07.2013
Сообщения: 20
Версия Delphi: delphi 6
Репутация: 10
По умолчанию Чтение данных из ячейки Excel вызовом Offset

Добрый день

хотелось бы получить консультацию по следующему вопросу:
(пытаюсь запрограммировать свой же макрос для XLS на дельфи, но испытываю трудности)
при помощи ниже приведенного фрагмента кода считываю данные из XLS файла. НО в ексель макросе, я мог читать данные по смещению от активной ячейки
а в дельфи что то не получается вызвать метод Offset

В екселе, в цикле я находил что в определенной ячейке есть константные данные «Тип Телефона», вызвав c.Offset( 1, 0).Value
я получал тип телефона (может быть указано ”МОБ” или ”СОТ”)

Код:
Public Const ConstTelephoneType = “Тип Телефона”
Dim c As Range
Dim ContactTelephone As String
For Each c In Range("A1:F1024")
    If c.Value = ConstTelephoneType Then
        ContactTelephone = c.Offset( 1, 0).Value        

---------------------------

НО как использовать метод Offset( X,Y).Value в дельфи?
ЕСЛИ КТО НАУЧИТ БУДУ ОЧЕНЬ БЛАГОДАРЕН


Код:
AXLSFile:= 'Имя Файла XLS';
 // Create Excel-OLE Object
XLApp := CreateOleObject('Excel.Application');
XLApp.Visible := TRUE; // потом поставить FALSE
 XLApp.Workbooks.Open(AXLSFile);
 Sheet := XLApp.Workbooks[1].WorkSheets[1];

Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
 // Get the value of the last row
 x := XLApp.ActiveCell.Row;
 // Get the value of the last column
 y := XLApp.ActiveCell.Column;
//XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
XLApp.Workbooks[1].WorkSheets[1].Select;
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
k := 1;
repeat
      for r := 1 to y do
      Begin
        sGetStrData := RangeMatrix[K, R];
       If (sGetStrData = TelephoneConst) Then
        Form1.RichEdit1.Lines.Add(sGetStrData);
      End;
      Inc(k, 1);
until k > x;
    // Unassign the Delphi Variant Matrix
    RangeMatrix := Unassigned;
Ответить с цитированием
  #2  
Старый 16.11.2013, 21:24
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от maxfox123
.....
НО как использовать метод Offset( X,Y).Value в дельфи?
ЕСЛИ КТО НАУЧИТ БУДУ ОЧЕНЬ БЛАГОДАРЕН


Код:
.....
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
k := 1;
repeat
      for r := 1 to y do
      Begin
        sGetStrData := RangeMatrix[K, R];
       If (sGetStrData = TelephoneConst) Then
        Form1.RichEdit1.Lines.Add(sGetStrData);
      End;
      Inc(k, 1);
until k > x;
    // Unassign the Delphi Variant Matrix
    RangeMatrix := Unassigned;
А разве так не работает?:
Код:
ContactTelephone := RangeMatrix[K, R].Offset[1, 0].Value;
Ответить с цитированием
  #3  
Старый 16.11.2013, 21:53
maxfox123 maxfox123 вне форума
Прохожий
 
Регистрация: 07.07.2013
Сообщения: 20
Версия Delphi: delphi 6
Репутация: 10
По умолчанию Да к сожалению так не работает (по крайней мере у меня)

sGetStrData := RangeMatrix[K, R].Offset[1, 0].Value;

Да к сожалению так не работает (по крайней мере у меня)
выдается ошибка "EOLEError with message 'Variant does not reference as automation object'"
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter