Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 18:48   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос StringGrid, Excel проблемы

Подскажите пожалуйста еще какие-нибудь процедуры открытия в StringGrid из Excel? А то этот код у меня выдает ошибку и не работает:
Код:
function xls_to_stringgrid(SG11:TStringGrid; axlsfile:string):Boolean;
const
 XlCellTypeLastCell=$0000000b;
var
 XLapp,Sheet:Olevariant;
 RangeMatrix:Variant;
 x,y,k,r:integer;
begin
  Result:=false;
  XLapp:=CreateOleObject('excel.application');
  try
    XLapp.Visible:=false;
    XLapp.Workbooks.Open(axlsfile);
    Sheet:=XLapp.Workbooks[1].Worksheets[1];
    Sheet.cells.specialcells(XLCellTypeLastCell,emptyparam).Activate;
    x:=XLapp.Activecell.Row;
    y:=XLapp.Activecell.Column;
    SG11.RowCount:=x;
    SG11.ColCount:=y;
    RangeMatrix:=XLapp.Range['a1',XLapp.Cells.Item[x,y]].Value;
    k:=1;
    repeat
      for
        r:=1 to y do
        SG11.Cells[(r-1),(k-1)]:=RangeMatrix[k,r];
        inc(k,1);
        SG11.RowCount:=k+1;
        until k>x;
        RangeMatrix:=Unassigned;
    finally
    if not Varisempty(XLapp) then
      begin
       XLapp.Quit;
       XLapp:=Unassigned;
       Sheet:=Unassigned;
       Result:=True;
      end;
    end;
  end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.11.2008, 20:59   #2
Proof
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 63
По умолчанию

А не пытался разобраться с ошибкой? Может надо было и еще ошибку прислать?
Proof вне форума Ответить с цитированием
Старый 27.11.2008, 03:57   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Выдает ошибку "Invalid argument" и выделяет эту строку: "SG1.Cells([r-1,k-1]):=RangeMatrix[r,k]. Что это значит?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.11.2008, 08:24   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Попробуй ксь вот так:
Цитата:
SG11.Cells[r,k]:=RangeMatrix[k,r];
Помоему у них нет нулевых элементов
ЗЫ В полне возможно, что ошибаюсь
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 27.11.2008, 09:41   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

У меня в ппредыдущей версии этот код работал. Например если я в предыдущей версии сохранял таблицу, то потом мог открыть. А в новой версии своей проги, я могу сохранить, а открыть сохраненную таблицу не могу, но зато могу открыть ее в старой версии программы.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.11.2008, 18:50   #6
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Тфу..... Я и не удосужился посмотреть что за SG11 я думал, что это продцедура сохраняет в xsl ^_^
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 27.11.2008, 18:57   #7
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Самое интересное в том, что данная функция рабочая =\
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 28.11.2008, 19:21   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
Самое интересное в том, что данная функция рабочая =\
а почему она должна быть не рабочая?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.11.2008, 19:37   #9
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
а почему она должна быть не рабочая?)
Ну ты как бы сам написал, что она не работает...

Проверил у себя, не пашет вылетает ошибка. После того, как закомментировал строку Sheet.cells.specialcells(XLCellType LastCell,emptyparam).Activate; всё нормально стало (странно, я работал с Excel-файлами, но об какой-то активации никогда не слышал и не видел).
zetrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel и StringGrid в Delphi monushka Помощь студентам 28 28.10.2009 16:33
из StringGrid в Excel artemavd Общие вопросы Delphi 6 24.07.2008 18:14
Excel 2007 - проблемы mirawoo Microsoft Office Excel 1 08.05.2008 21:17
Excel и StringGrid... Roof Общие вопросы Delphi 2 18.09.2007 17:07
Excel и StringGrid apx_angel Компоненты Delphi 2 20.02.2007 00:20