Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

проблема с импортом   Найти похожие ветки 

 
bagos[XZ]   (2006-04-08 09:42) [0]

добрый день всем мастерам,прошу помощи.
вот код импорта данных в StringGrid.
Не получаеться сделать так,чтобы импортированные данные добавлялись после уже имещихся в StringGrid,а то они заменяют предыдущие данные.Надеюсь на помощь

procedure TForm2.Excel2Click(Sender: TObject);
var
WorkBk : _WorkBook;
WorkSheet : _WorkSheet;
K, R, X, Y : Integer;
IIndex : OleVariant;
RangeMatrix : Variant;
NomFich : WideString;
fname:string;
begin
 if (OpenDialog1.Execute)
   then begin
     FName := OpenDialog1.FileName;
NomFich := fname;
IIndex := 1;
XLApp.Connect;
// Открываем файл Excel
XLApp.WorkBooks.Open(NomFich,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
WorkBk := XLApp.WorkBooks.Item[IIndex];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Чтобы знать размер листа (WorkSheet), т.е. количество строк и количество
// столбцов, мы активируем его последнюю непустую ячейку
WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
// Получаем значение последней строки
X := XLApp.ActiveCell.Row;
// Получаем значение последней колонки
Y := XLApp.ActiveCell.Column;
// Определяем количество колонок в TStringGrid
 GenericStringGrid.ColCount := Y;
// Сопоставляем матрицу WorkSheet с нашей Delphi матрицей
 RangeMatrix := XLApp.Range["A1",XLApp.Cells.Item[X,Y]].Value;
// Выходим из Excel и отсоединяемся от сервера
 XLApp.Quit;
 XLApp.Disconnect;
//  Определяем цикл для заполнения TStringGrid
K := 2;
 repeat
   for R := 1 to Y do
     GenericStringGrid.Cells[(R - 1),(K - 1)] := RangeMatrix[K,R];
   Inc(K,1);
GenericStringGrid.RowCount := K + 1;
 until
  K > X;
// Unassign the Delphi Variant Matrix
  RangeMatrix := Unassigned;
   end
end;


 
Savek   (2006-04-08 10:14) [1]

В смысле при повторном использовании этой процедуры?
Ну так убери К:=2;


 
bagos[XZ]   (2006-04-08 10:17) [2]

убрал,дельфи начала ругаться,типо нет значения К


 
Savek   (2006-04-08 11:50) [3]

Убрать надо из этой процедуры, а начальное значение присвоить где-то в начале программы, например в Form1.OnCreate


 
bagos   (2006-04-08 15:36) [4]

все равно ругается


 
Nick_serov   (2006-04-08 16:01) [5]

Вот примерный код, приспосабливай и все получится =))))

procedure TForm1.xpButton1Click(Sender: TObject);
begin
if OD1.Execute then
begin
 n := OD1.FileName;                             //<<<<<<< OpenDialog
 ExAp1.Workbooks.Add(n,0);
 ExW1.ConnectTo(ExAp1.ActiveWorkbook);
 Progress.Max := strtoint(edit1.Text);
 Progress.Step := 1;
 grid1.RowCount := strtoint(edit1.Text);
 for i := 1 to strtoint(edit1.Text) do
     begin
       Progress.Position := i;
       for j := 1 to 9 do
       begin
         grid1.Cells[j,i] := ExAp1.Cells.Item[i,j].Value;
       end;
     end;
 ExW1.Close;
end;
end;

procedure TForm1.xpButton3Click(Sender: TObject);  //<<<<< Сохранение
begin
 if savedialog1.Execute then
 grid1.SaveToXLS(savedialog1.FileName);
end;


 
bagos   (2006-04-08 22:42) [6]

var
fname:string;
Progress:Variant;
i,j:integer;
begin
if OpenDialog1.Execute then
begin
fname := OpenDialog1.FileName;                           //<<<<<<< OpenDialog
XLApp.Workbooks.Add(n,0);
Progress.Max := strtoint(edit1.Text);
Progress.Step := 1;
GenericStringGrid.RowCount := strtoint(edit1.Text);
for i := 1 to strtoint(edit1.Text) do
    begin
      Progress.Position := i;
      for j := 1 to 9 do
      begin
        GenericStringGrid.Cells[j,i] := XLApp.Cells.Item[i,j].Value;
      end;
    end;

вот переделал чуток код, пишет ошибка с Variant и не открывает файл


 
bagos   (2006-04-08 22:43) [7]

и что такое за строчка  ExW1.ConnectTo(ExAp1.ActiveWorkbook)
ExW1 -- ??


 
bagos   (2006-04-09 15:06) [8]

неужели нету народа работающего с excel в delphi?


 
bagos   (2006-04-09 16:21) [9]

вот код с помощью которого импортирую,но почему то не получается сделать вывод только тех строк, в которых в excel листе есть какие то слова,
var
n,e:string;
b,i,j:integer;
begin
if OpenDialog1.Execute then
begin
n := OpenDialog1.FileName;
XLApp.Workbooks.Add(n,0);
XLApp.Connect;
GenericStringGrid.RowCount :=xlapp.ActiveCell.Row; //получается что xlapp.ActiveCell.Row=1,почему так???
b:=GenericStringGrid.RowCount;
for i := 2 to b do //i:=2 так как первая строка мне нужна пустой
    begin
          for j := 1 to 12 do
      begin
        GenericStringGrid.Cells[j-1,i-1] := XLApp.Cells.Item[i,j].Value;
end;
end;
end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
3-1141205347
Kot_
2006-03-01 12:29
2006.04.23
Выборка без дублирования?


15-1144052298
Sial
2006-04-03 12:18
2006.04.23
шейп-файл


15-1144093886
Petr V. Abramov
2006-04-03 23:51
2006.04.23
Oracle 10 Release 2


2-1144140081
azl
2006-04-04 12:41
2006.04.23
Вкладка ActiveX в Delphi 2006


3-1141201875
Andreus
2006-03-01 11:31
2006.04.23
Проблема: не работает поиск по полю, при наличии индекса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский