Форум: "Начинающим";
Текущий архив: 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.012 c