Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вылетает ошибка при открытии Excel-файла 
:(
    Опции темы
Bastar
Дата 3.12.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Screen.Cursor:=crAppStart;
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
   XLApp.Visible := False;
   XLApp.Workbooks.Open(AXLSFile);
   Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
   Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;   // ВОТ СДЕСЬ ВЫЛЕТАЕТ ОШИБКА
   x := XLApp.ActiveCell.Row;
   y := XLApp.ActiveCell.Column;
   AGrid.RowCount := x;
   AGrid.ColCount := y;  
   RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
   k := 1;
   repeat
     for r := 1 to y do
      AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
     Inc(k, 1);
     AGrid.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;
Screen.Cursor:=crDefault;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  form1.OpenDialog1.Filter:= 'Эксель файлы (*.xls)|*.xls';
  form1.OpenDialog1.Title:= 'Open';
  form1.OpenDialog1.FilterIndex:=2;
  if form1.OpenDialog1.Execute then
    Xls_To_StringGrid(form1.stringgrid1,form1.OpenDialog1.filename);
end;

end.



Пишет "Project Project1.exe raised exception class EOleException with message" 'Метод Activate из класса Range завершено не верно'.Process stopped..."

Я даже не представляю что это 
PM MAIL   Вверх
volvo877
Дата 3.12.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 5
Всего: 116



Цитата(Bastar @  3.12.2008,  09:39 Найти цитируемый пост)
Пишет "Project Project1.exe raised exception class EOleException with message" 'Метод Activate из класса Range завершено не верно'.Process stopped..."
Версию Excel озвучь, и покажи, что у тебя находится в файле. На Excel 2002 + Delphi 2009 с файлом, содержащим 2 колонки цифр, все обрабатывается прекрасно...
PM MAIL   Вверх
Bastar
Дата 3.12.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



volvo877, 
Версия Офиса 2003 в фале находится четыре столбика с полутротысячью строками) данные чисто числовые

Добавлено через 12 минут и 37 секунд
А все разобрался!!! Код работает если в файле 1 лист... Спасибо за внимание)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

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

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


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

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

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


 




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


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

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