
07.04.2009, 00:57
|
Прохожий
|
|
Регистрация: 26.10.2008
Сообщения: 4
Репутация: 10
|
|
delphi и excel
помогите плис как зделать штоб вивод с excel файла начиналса с первой ячейку stringgrida а не с второй
Код:
procedure TForm1.Button15Click(Sender: TObject);
var
WorkBk: _WorkBook;
WorkSheet: _WorkSheet;
K,R,X,Y: integer;
IIndex: OleVariant;
RangeMatrix: Variant;
NomFich: WideString;
begin
NomFich:=ExtractFilePath(ParamStr(0))+'xl.xls';
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
StringGrid1.ColCount:=Y+1;
// Сопоставляем матрицу WorkSheet с нашей Delphi матрицей
RangeMatrix:=XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value2;
// Выходим из Excel и отсоединяемся от сервера
XLApp.Quit;
XLApp.Disconnect;
// Определяем цикл для заполнения TStringGrid
K:=1;
repeat
for R:=1 to Y do
StringGrid1.Cells[(R),(K)]:=RangeMatrix[K,R];
StringGrid1.RowCount:=K+1;
inc(K,1);
until K>X;
// Un assign the Delphi Variant Matrix
RangeMatrix:=Unassigned;
end;
и второе запись из стрингрида в excel немогу понять в чем ошибка
Код:
Код:
procedure TForm1.Button13Click(Sender: TObject);
var
Excel, WorkBook, Sheet: Variant;
begin
Excel:=CreateOleObject('Excel.Application.10'); // для Office XP
// Excel:=CreateOleObject('Excel.Application'); // для остальных
Excel.SheetsInNewWorkbook:=1;
WorkBook:=Excel.WorkBooks.Add;
Sheet:=WorkBook.WorkSheets[1];
Sheet.Cells.VerticalAlignment:=xlCenter;
Sheet.Cells[1, 1]:='XX___1___XX';
Sheet.Cells[5, 5]:='XX___1___XX';
Sheet.Cells.Columns.AutoFit;
Excel.Visible:=True;
end;
п.с сорри за орфографию
|