我在excel中做好一个文件,比如是c:\a.xls,这个文件中有一组数据,一个chartexcel中
A B C
1 T1 10
2 T2 20
3 T3 5
CHART中对应的是B1-C3,CHART中的各属性已在excel中设好,画出的是带标记两维折线,折线的每点有具体的数值。我想用一个adotable,把数据表中的值导入到excel中对应的单元,这样a.xls中的曲线就会随着数据表的数据的改变而改变。不知如何实现,请各位高手帮忙啊?200分相送我自己写了一段程序,不过只是把数据导入到新建的workbook中,没能导入到c:\a.xls中,请高手给我提示阿
procedure TForm1.Button1Click(Sender: TObject);
var
iCount, jCount: Integer;
XLApp:Variant;
begin
Screen.Cursor := crHourGlass;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.Workbooks.Add();
begin
try
adotable1.First;
for iCount := 0 to adotable1.FieldCount- 1 do
XLApp.worksheets['sheet1'].Cells[1, iCount + 1]:=adotable1.Fields[iCount].FieldName;
jCount := 1;
while not adotable1.Eof do
begin
for iCount := 0 to adotable1.FieldCount- 1 do
XLApp.worksheets['sheet1'].Cells[jCount + 1, iCount + 1] :=adotable1.Fields[iCount].AsString;
Inc(jCount);
adotable1.Next;
end;
XlApp.Visible := True;
except
xlapp.quit;
end;
end;
Screen.Cursor := crDefault;
end;
A B C
1 T1 10
2 T2 20
3 T3 5
CHART中对应的是B1-C3,CHART中的各属性已在excel中设好,画出的是带标记两维折线,折线的每点有具体的数值。我想用一个adotable,把数据表中的值导入到excel中对应的单元,这样a.xls中的曲线就会随着数据表的数据的改变而改变。不知如何实现,请各位高手帮忙啊?200分相送我自己写了一段程序,不过只是把数据导入到新建的workbook中,没能导入到c:\a.xls中,请高手给我提示阿
procedure TForm1.Button1Click(Sender: TObject);
var
iCount, jCount: Integer;
XLApp:Variant;
begin
Screen.Cursor := crHourGlass;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.Workbooks.Add();
begin
try
adotable1.First;
for iCount := 0 to adotable1.FieldCount- 1 do
XLApp.worksheets['sheet1'].Cells[1, iCount + 1]:=adotable1.Fields[iCount].FieldName;
jCount := 1;
while not adotable1.Eof do
begin
for iCount := 0 to adotable1.FieldCount- 1 do
XLApp.worksheets['sheet1'].Cells[jCount + 1, iCount + 1] :=adotable1.Fields[iCount].AsString;
Inc(jCount);
adotable1.Next;
end;
XlApp.Visible := True;
except
xlapp.quit;
end;
end;
Screen.Cursor := crDefault;
end;
而不是用add新增
增加一个变量:MyWorkBook: Variant;
以后对MyWorkBook进行操作 MyWorkBook:= ExcelApp.WorkBooks.Open('c:\a.xls');
MyWorkBook.WorkSheets[1].Cells[1,1].Value:='aaaa';
EXCEL:
var
ExcelApp: Variant;
SaveFilePath, ExcelData: string;
i, j: integer;
begin
try
ExcelApp := CreateOleObject('Excel.Application');
except
Application.MessageBox('请检查是否安装有Microsoft Excel',
'警告', mb_OK);
end; if SaveDialog1.Execute then
SaveFilePath := SaveDialog1.FileName
else
Exit; try
ExcelApp.Visible := False;
ExcelApp.Caption := '应用程序调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[2].Activate;
for i := 1 to self.DBGrid1.Columns.Count do
begin
ExcelData := DBGrid1.Columns[i - 1].Title.Caption;
ExcelApp.Cells[1, i].Value := ExcelData;
application.ProcessMessages;
end; DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.First;
j := 2;
while not DBGrid1.DataSource.DataSet.Eof do
begin
for i := 1 to DBGrid1.Columns.Count do
begin
application.ProcessMessages;
ExcelData := DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.Columns[i -
1].FieldName).asstring;
ExcelApp.Cells[j, i].Value := ExcelData; end;
DBGrid1.DataSource.DataSet.Next;
j := j + 1;
end;
DBGrid1.DataSource.DataSet.EnableControls;
ExcelApp.ActiveSheet.Saveas(SaveFilePath);
ExcelApp.Quit;
Application.MessageBox('记录输出完毕!', '信息', mb_OK);
except
Application.MessageBox('记录输出失败!', '警告', mb_OK);
ExcelApp.Quit;
end;
end;
aiirii(ari-爱的眼睛) ,我知道你是高手,能否回答我啊?
uses
OleServer, Excel2000, ComObj,
ExcelApp,MyWorkBook: Variant;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet'); //可能少了这一句
//ExcelApp.Visible:=true;
except
Application.Messagebox('无法打开Xls文件,请确认已经安装EXCEL!','',
mb_OK+mb_IconStop);
Exit;
end; MyWorkBook:= ExcelApp.WorkBooks.Open('c:\a.xls',0);
var
eclApp,wkBook,wkSheet:Variant;
tq:tquery;
s:string;
begin
if SelectDirectory('请选择一个文件夹,用于保存生成的Excel文件。','',fname) then
begin
fname:=fname+'\';
tq.Open;
try
//创建OLE对象Excel Application与 WorkBook
eclApp:=CreateOleObject('Excel.Application');
wkBook:=CreateOleobject('Excel.Sheet');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
end;
tq:=tquery.Create(nil);
//初始化tq
wkBook:=eclApp.workBooks.Add;
wkBook:=eclApp.workBooks.Open(tmpname);//打开模板
Td.DataSource.DataSet.open;
Td.DataSource.DataSet.first;
while not Td.DataSource.DataSet.Eof do //Excel控制数据库文件
begin
eclApp.Cells.Item[j,1].Value:=//向Excel保存数据。
Td.DataSource.DataSet.next;
end;wkBook.saveas(s);
wkBook.Close;
eclApp.Quit;
eclApp:=Unassigned;
showmessage('文件:'+s+' 已经存储。');
end;