关于excel.application(50分)

  • 主题发起人 主题发起人 Kent
  • 开始时间 开始时间
K

Kent

Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过代码生成excel.application并且excel的表单再form中?
不用olecontainer行吗?
 
我用 D4, 这样做:
procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp,MyWorkBook:Variant;
i :byte;
s: string;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
except
on Exception do raise exception.Create('无法打开Xls文件,请确认已 经安装EXCEL')
end;
ExcelApp.Visible := true;
MyworkBook:=ExcelApp.workBooks.Add;

//在此处插入读数据库及写Excel文档的代码
//其中写Excel文档的关键语句如下:
Myworkbook.worksheets[1].range['A1:D1'].Merge(True);
Myworkbook.worksheets[1].range['A1:D2'].HorizontalAlignment := $FFFFEFF4;
MyWorkBook.WorkSheets[1].Cells[1,1].Value := '热带鱼列表---1999年';

i := 2;
MyWorkBook.WorkSheets[1].Cells[i,1].Value := '鱼的名字';
MyWorkBook.WorkSheets[1].Cells[i,2].Value := '大小';
MyWorkBook.WorkSheets[1].Cells[i,3].Value := '重量';
MyWorkBook.WorkSheets[1].Cells[i,4].Value := '产区';
Myworkbook.worksheets[1].Range['A1:D2'].Font.Color := clBlue;
Myworkbook.worksheets[1].Range['A1:D1'].Font.Name := '隶书';
Myworkbook.worksheets[1].Range['A1:D1'].Font.Size := 18;


i := 3;
table1.First;
while not table1.eof do begin
MyWorkBook.WorkSheets[1].Cells[i,1].Value := table1.FieldByName('name').AsString;
MyWorkBook.WorkSheets[1].Cells[i,2].Value := table1.FieldByName('size').AsInteger;
MyWorkBook.WorkSheets[1].Cells[i,3].Value := table1.FieldByName('weight').AsInteger;
MyWorkBook.WorkSheets[1].Cells[i,4].Value := table1.FieldByName('area').AsString;
Inc(i);
table1.Next
end;
ExcelApp.Visible := true;

s := 'A3:D'+ IntToStr(i-1);

//设定字体. 栏宽等
s := 'A1:D'+ IntToStr(i-1);
Myworkbook.worksheets[1].Columns[1].ColumnWidth := 20;
Myworkbook.worksheets[1].Columns[4].ColumnWidth := 25;
Myworkbook.worksheets[1].Rows[1].RowHeight := 50;
Myworkbook.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;

Myworkbook.worksheets[1].Range.Font.Name := '仿宋';
s := 'A2:D'+ IntToStr(i-1);
Myworkbook.worksheets[1].Range.Borders.LineStyle := 1;
//页面设置
MyworkBook.WorkSheets[1].PageSetup.CenterHorizontally := true;
Myworkbook.worksheets[1].pagesetup.PrintTitleRows := 'A1';


//不能设置 papersize 属性, 原因不明
//MyworkBook.WorkSheets[1].PageSetup.PaperSize := $9;
{
try
MyWorkBook.saveas('c:/' + Edit1.Text + '.xls');
MyWorkBook.close;
except //当存为一个已有的文档而又不覆盖时将
MyWorkBook.close; //产生一个例外
end;
ExcelApp.Quit;
ExcelApp:=Unassigned; //释放VARIANT变量
}
end;
 
To Crab:

您所给的程序我看了,现在我的问题是想让Excel的Sheet显示在
我的form中,不用OleContainer能做到吗?请指教...
 
不用OLE是不可能的!用F1Book吧
 
接受答案了.
 
为什么不试一试activeX控件TspeadSheet ?
 
后退
顶部