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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 14:05   #1
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию Отображения Excel файла в StringGrid-е

Есть файл Excel. Необходимо его по частям (по 11 строк) загружать в StringGrid.
Ссылк на скрин файла Excel приведена ниже
По скольку в файле более 10000 строк - не целесообразно его целиком загружать.

Смотрел предыдущую тему по работе с Excel файлами, в поиске, DelphiWorld...
Пробовол разные варианты. Везде одну и ту-же ошибку выдает:
"...\01_95.xls" is not a valid component name.

Не могу разобраться что я не так делаю...
До этого работал только с текстовыми файлами. xls для меня в новинку ))
Если можно разжуйте мне, что и к чему.
Изображения
Тип файла: jpg 12345.jpg (54.5 Кб, 144 просмотров)
Жить тоже вредно, от этого умирают!!!
Demien вне форума
Старый 16.04.2009, 14:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы выбирал из двух вариантов:
1 - Пересохранить в CVS и загружать уже этот файл
2 - SQL запросами к провадеру ODBC, подключенному в этой XLS
I'm learning to live...
Stilet вне форума
Старый 16.04.2009, 14:57   #3
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
Везде одну и ту-же ошибку выдает:
"...\01_95.xls" is not a valid component name.
покажи свой код
S@fer вне форума
Старый 16.04.2009, 15:47   #4
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    Edit2: TEdit;
    Label1: TLabel;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid2: TStringGrid;
    Label4: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  str, kol: Integer;
  Name: String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  CLose;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  OpenDialog1.Filter:='*.*|*.*';
  OpenDialog1.Execute;
  Edit1.Text :=OpenDialog1.FileName;
end;

procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:          TextFile;
   i, k:       Integer;
   strTemp:    String;
 begin
   AssignFile(f, FileName);
   Reset(f);
   with StringGrid do
   begin
    Readln(f, kol);
     ColCount := kol;
    Readln(f, str);
     RowCount := str;
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
       begin
         Readln(f, strTemp);
         Cells[i, k] := strTemp;
       end;
   end;
   CloseFile(f);
 end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  str:=10;
  kol:=4;
  Name:= Edit1.Text;
  LoadStringGrid(StringGrid1, Name);
end;

end.
Жить тоже вредно, от этого умирают!!!
Demien вне форума
Старый 16.04.2009, 20:50   #5
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Нужно подключится из своего приложения к Excel, через COM. Запустить экземпляр Excel, но окно не показывать, загрузить в этот экземпляр нужный файл и читать данные, обращаясь к ячейкам, по их адресам.
Сейчас под рукой нет делфи и необходимого кода, чуть позже могу отписаться, как это реализовать.
oleg kutkov вне форума
Старый 16.04.2009, 21:00   #6
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Время не жмет!
Буду очень благодарен за помощь!
Жить тоже вредно, от этого умирают!!!
Demien вне форума
Старый 16.04.2009, 23:00   #7
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Вот как можно получать данные из файла xls:

Код:
uses ComObj; //подключаем необходимый модуль
 ......
 procedure FromXlsToGrid()
  var e : variant; //переменная-объект, через которую будем обращатся к Excel
  rc, fc : integer; //переменные для хранения индекса строки и столбца, соответственно
  begin
    e := CreateOleObject('Excel.Application'); //подключаемся с Excel
    e.WorkBooks.Open('таблица.xls'); //добавляем рабочую книгу из файла
     for rc = 0 to 22 do //крутим цикл для добавления в StringGrid 22 строк
       begin
         inc(StringGrid.RowCount); //добавляем новую строку в StringGrid
            for fc = 0 to 4 do //крутим цикл для пробега по столбцам
              begin
                 StringGrid.Cells[fc,rc] := e.Cells[rc+1,fc+1]; //получаем значение ячейки Excel и присваиваем в ячейку StringGrid. Добавление едениц необходимо из-за того, что в Excel индексы начинаются с еденицы. 
              end;           
       end;
   e.Close; //отпускаем Excel   
  end;
Удачи.
oleg kutkov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel и StringGrid в Delphi monushka Помощь студентам 28 28.10.2009 16:33
StringGrid, Excel проблемы artemavd Общие вопросы Delphi 8 28.11.2008 19:37
из StringGrid в Excel artemavd Общие вопросы Delphi 6 24.07.2008 18:14
Excel и StringGrid... Roof Общие вопросы Delphi 2 18.09.2007 17:07
Excel и StringGrid apx_angel Компоненты Delphi 2 20.02.2007 00:20