一个关于excel的简单问题,在线等待! 问题:我们工作所用的excel表要用到宏,宏是镶嵌在excel表里的。这个宏是用vb写的,我现在想用delphi达到同样的效果,请问可以吗?因为excel自带了vb编辑器,所以用起来很方便,但是我对delphi更加熟悉,现在不知道excel和delphi的接口是怎样的,请高手详细解答,在线等待!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delphi也可以的比如说//将数据导入到EXCEL中procedure TfrmPrint2.ExportDataToExcel;var i, j, k: integer; xxx1: string; xr: string;begin if frmPrint2.dstlist.items.count = 0 then begin application.messagebox('没有选择目标字段!', '管理系统', mb_iconwarning + mb_defbutton1); exit; end; frmPrint2.statusbar1.Panels[0].text := '正在载入Excel,请稍候......'; frmPrint2.statusbar1.refresh; try screen.cursor := crHourGlass; try //创建EXCEL对象 varexcel := createoleobject('excel.application'); if not varisempty(varexcel) then begin //添加工作簿 varexcel.workbooks.add; varexcel.workbooks[1].worksheets[1].name := '数据库信息'; end; except application.messagebox('请确认是否安装Excel?', '提示信息:', mb_iconquestion + mb_defbutton1); exit; end; begin //获取数据 getData; //写入列标题 range := varexcel.workbooks[1].worksheets[1].columns; for i := 0 to frmPrint2.dstlist.Items.count - 1 do begin varexcel.workbooks[1].worksheets[1].cells[2, i + 1].value := frmPrint2.dstlist.items.strings[i]; varexcel.workbooks[1].worksheets[1].cells[2, i + 1].Font.bold := true; range.columns[i + 1].columnwidth := frmPrint2.adoquery1.Fieldbyname(frmPrint2.dstlist.items.Strings[i]).Displaywidth; range.columns[I + 1].HorizontalAlignment := xlCenter; end; try try //循环写入数据到EXCEL中 frmPrint2.adoquery1.First; j := 3; while not frmPrint2.adoquery1.eof do begin for i := 0 to frmPrint2.dstlist.Items.count - 1 do begin xr := ''''+frmPrint2.adoquery1.fieldbyname(frmPrint2.dstlist.items.strings[i]).AsString; varexcel.workbooks[1].worksheets[1].cells[j, i + 1].value := xr; end; frmPrint2.adoquery1.next; j := j + 1; end; varexcel.workbooks[1].worksheets[1].cells[j + 1, 2].value := '制表: ' + frmPrint2.edtLister.text; varexcel.workbooks[1].worksheets[1].cells[j + 1, 4].value := '日期: ' + frmPrint2.edtListDate.text; except end; finally frmPrint2.adoquery1.enablecontrols; frmPrint2.statusbar1.Panels[0].text := ''; k := i - 1 + ord('A'); xxx1 := chr(k); xxx1 := 'A2:' + xxx1 + inttostr(j - 1); //将数据表格画线 range := varexcel.workbooks[1].worksheets[1].range[xxx1]; range.borders.linestyle := xlcontinuous; k := i - 1 + ord('A'); xxx1 := chr(k); xxx1 := 'a1:' + xxx1 + '1'; //数据标题列居中 range := varexcel.workbooks[1].worksheets[1].range[xxx1]; range.HorizontalAlignment := xlCenter; range.VerticalAlignment := xlCenter; range.MergeCells := True; //对报表标题进行修饰 varexcel.workbooks[1].worksheets[1].range['a1:a1'] := frmPrint2.edtPrintTitle.text; varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.name := '楷体'; varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.size := '18'; varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.fontstyle := 'bold'; varexcel.visible := true; end; end; finally screen.cursor := crArrow; end;end; 为什么使用tidhttp读取网页源码有些网站读取不到呢? FileStream怎么样可以多次读取同一文件? 如何提取应用程序对话框里显示的数据复制到word中? (求助)如何--- 做出---- 图片爆炸效果? 对话框 函数给 我编的一个服务程序,是文件传输的!!出了一点问题!!哪位高手指点迷津!!! 改变分辨率 在窗体中用到某个工程外的文件,应该在哪里添加? 几个文件管理函数的使用?? 各高人,请问函数怎么做为另一个函数的参数?请举列说明。。。。 ADO存储控件的问题(在线)? TMSComm控件安装问题
比如说
//将数据导入到EXCEL中procedure TfrmPrint2.ExportDataToExcel;
var
i, j, k: integer;
xxx1: string;
xr: string;
begin
if frmPrint2.dstlist.items.count = 0 then
begin
application.messagebox('没有选择目标字段!', '管理系统', mb_iconwarning + mb_defbutton1);
exit;
end;
frmPrint2.statusbar1.Panels[0].text := '正在载入Excel,请稍候......';
frmPrint2.statusbar1.refresh;
try
screen.cursor := crHourGlass;
try
//创建EXCEL对象
varexcel := createoleobject('excel.application');
if not varisempty(varexcel) then
begin
//添加工作簿
varexcel.workbooks.add;
varexcel.workbooks[1].worksheets[1].name := '数据库信息';
end;
except
application.messagebox('请确认是否安装Excel?', '提示信息:', mb_iconquestion + mb_defbutton1);
exit;
end;
begin
//获取数据
getData;
//写入列标题
range := varexcel.workbooks[1].worksheets[1].columns;
for i := 0 to frmPrint2.dstlist.Items.count - 1 do begin
varexcel.workbooks[1].worksheets[1].cells[2, i + 1].value := frmPrint2.dstlist.items.strings[i];
varexcel.workbooks[1].worksheets[1].cells[2, i + 1].Font.bold := true;
range.columns[i + 1].columnwidth := frmPrint2.adoquery1.Fieldbyname(frmPrint2.dstlist.items.Strings[i]).Displaywidth;
range.columns[I + 1].HorizontalAlignment := xlCenter;
end;
try
try
//循环写入数据到EXCEL中
frmPrint2.adoquery1.First;
j := 3;
while not frmPrint2.adoquery1.eof do begin
for i := 0 to frmPrint2.dstlist.Items.count - 1 do begin
xr := ''''+frmPrint2.adoquery1.fieldbyname(frmPrint2.dstlist.items.strings[i]).AsString;
varexcel.workbooks[1].worksheets[1].cells[j, i + 1].value := xr;
end;
frmPrint2.adoquery1.next;
j := j + 1;
end;
varexcel.workbooks[1].worksheets[1].cells[j + 1, 2].value := '制表: ' + frmPrint2.edtLister.text;
varexcel.workbooks[1].worksheets[1].cells[j + 1, 4].value := '日期: ' + frmPrint2.edtListDate.text;
except
end;
finally
frmPrint2.adoquery1.enablecontrols;
frmPrint2.statusbar1.Panels[0].text := '';
k := i - 1 + ord('A');
xxx1 := chr(k);
xxx1 := 'A2:' + xxx1 + inttostr(j - 1);
//将数据表格画线
range := varexcel.workbooks[1].worksheets[1].range[xxx1];
range.borders.linestyle := xlcontinuous;
k := i - 1 + ord('A');
xxx1 := chr(k);
xxx1 := 'a1:' + xxx1 + '1';
//数据标题列居中
range := varexcel.workbooks[1].worksheets[1].range[xxx1];
range.HorizontalAlignment := xlCenter;
range.VerticalAlignment := xlCenter;
range.MergeCells := True;
//对报表标题进行修饰
varexcel.workbooks[1].worksheets[1].range['a1:a1'] := frmPrint2.edtPrintTitle.text;
varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.name := '楷体';
varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.size := '18';
varexcel.workbooks[1].worksheets[1].range['a1:a1'].font.fontstyle := 'bold';
varexcel.visible := true;
end;
end;
finally
screen.cursor := crArrow;
end;
end;