Entwickler-Ecke

Sonstiges (Delphi) - EXCEL über OLE Spaltenbreite ändern


Boldar - So 13.07.08 16:53
Titel: EXCEL über OLE Spaltenbreite ändern
Hallo,
ich steuere Excel über ole.
wie ändere ich die Spaltenbreite einer Bestimmten Spalte?
Wenn ich das als Makro mache, lautet der VB-Source

Quelltext
1:
Columns("A:A").ColumnWidth = 49.14                    

nur weiss ich nicht, wie ich dass in Delphi umsetzen soll.


MSCH - So 13.07.08 20:05

schau mal hier:

im Designer (BDS2006)
Excel: TExcelApplication
Workbook: TExcelWorkbook
WorkSheet:TExcelWorkSheet
und dann


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var
  LCID: Longint;
  i, iPage, iRow, iCell: Integer;
  ovar: OleVariant;
begin
  Screen.Cursor:=crHourGlass;
  try
    Excel.Connect;
    lcid := LOCALE_USER_DEFAULT;
    Excel.Visible[lcid]:= false;//True;
    Workbook.ConnectTo (Excel.Workbooks.Open(Path,emptyParam,emptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,lcid));
    Worksheet.ConnectTo (Workbook.Worksheets[1as _Worksheet);
    ovar:=13// with as olevarient
    WOrksheet.Range['A','A'].Columns.ColumnWidth:= ovar;
    ...
    <blablabla>

grez
msch


Boldar - So 13.07.08 22:16

Ich habe einen völlig anderen Code zum Verbinden mit excel gehabt, habe es aber nun aber nach einigem Probieren so gelöst:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var excel: variant
begin
    Excel := CreateOleObject('Excel.Application');
    excel.Application.SheetsInNewWorkBook := 1//Die 1 is die Anzahl der Sheets
    Excel.Workbooks.Add;
    Excel.Sheets[1].name := sheetname;
    excel.range['A1:D1'].select;
    excel.selection.font.bold := true;
    excel.selection.font.size := 20;
    excel.columns[1].columnwidth := 21