Главная страница
    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.011 c
2-1144406754
Alex_C
2006-04-07 14:45
2006.04.23
Sharemem и чудеча!


15-1143728797
Хинт
2006-03-30 18:26
2006.04.23
Не пойму где ошибка (вызов функции из DLL)


15-1143661111
Piter
2006-03-29 23:38
2006.04.23
Лукьяненко - "Черновик"


8-1128977517
Alko
2005-10-11 00:51
2006.04.23
Обратный отсчте времени


8-1132137370
artyonkil
2005-11-16 13:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский