怎么直接生成Excel格式的文件(.xls文件),不用Excel(200分)

  • 主题发起人 主题发起人 wenjunlin2000
  • 开始时间 开始时间
W

wenjunlin2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我想直接生成Excel的.xls文件(不需要该机器上安装Excel),首先遇到的问题是不知道Excel文件的格式,哪位老哥能指点一下。
 
新建一个窗体加一个TIMER控件,将下面的代码加入你的TIMER控件,也许有用.
var
I,n,J,M,K:integer;
begin
TIMER1.Enabled:=FALSE;
try
oleobject := CreateOleObject('EXCEL.APPLICATION');
except
MessageBeep(0);
Application.MessageBox('您的系统未安装 MS EXCEL或EXCEL错误!','提示信息',16);
Exit;
end;
oleOBJECT.WORKBOOKS.ADD;
N:=SENDQUERY.RecordCount;
M:=SENDQUERY.FieldCount-1;
SENDQUERY.First;
SENDQuery.DisableControls;
LABEL1.Caption:='正在发送数据...';
LABEL1.Refresh;
try
FOR J:=0 TO Mdo
begin
IF ISCANCEL then
begin
IF APPLICATION.MessageBox('真的要终止数据发送吗?','请确认',36)=6 then
begin
OLEOBJECT.DISPLAYALERTS:=FALSE;
OLEOBJECT.quit;
close;
EXIT;
END
else
ISCANCEL:=FALSE;
end;
APPLICATION.ProcessMessages;
OLEOBJECT.WORKBOOKS[1].WORKSHEETS[1].CELLS[1,J+1].VALUE:=
TRIM(SENDQUERY.FIELDS[J].FIELDNAME);
end;
FOR I:=1 TO Ndo
begin
K:=ROUND(100*I/N);
PROBAR.POSITION:=K;
LABEL2.Caption:='已完成'+trim(inttostr(k))+'%';
LABEL2.Refresh;
FOR J:=0 TO Mdo
begin
IF ISCANCEL then
begin
IF APPLICATION.MessageBox('真的要终止数据发送吗?','请确认',36)=6 then
begin
OLEOBJECT.DISPLAYALERTS:=FALSE;
OLEOBJECT.quit;
close;
EXIT;
END
else
ISCANCEL:=FALSE;
end;
APPLICATION.ProcessMessages;
OLEOBJECT.WORKBOOKS[1].WORKSHEETS[1].CELLS[I+1,J+1].VALUE:=
TRIM(SENDQUERY.Fields[J].ASSTRING);
end;
SENDQUERY.NEXT;
end;
except
messageBeep(0);
Application.MessageBox('发送数据失败!','提示信息',64);
OLEOBJECT.DISPLAYALERTS:=FALSE;
OLEOBJECT.quit;
CLOSE;
exit;
end;
SENDQUERY.EnableControls;
OLEOBJECT.VISIBLE:=TRUE;
CLOSE;
 
请问有什么控件可以直接把TABLE中的数据传到EXCEL中吗?
 
to LanderLiu
你有没有搞错,我想直接生成Excel格式的文件,也就是说不通过Excel,不用OLE调用Excel。不然的话我就不用在这问了。
 
这个...... 在下不知,等高手来[8D]
 
分析一下,Excel的文件格式,把你自己的文件用那种格式保存了,通过Ole只是调用了Excel的
保存转换而已
 
我做过一个将.txt文件转换为.xls文件的程序。
只不过用了memo,savedialog,opendialog几个控件就搞定了;
感觉上只要是格式较为规范的文本,就可以用memo的savetofile方法
直接转到.xls格式,好像.xls没有什么特别的格式限定
 
你在这里搜索一下,我见过有人做过一个,是参照ehlib改写的。
 
用异构方式试试
 
我有一个例子,楼上的想要,请发emil:hgc_home@163.com
我发给你!
 
excel也是一个数据表。通过ODBC连接就可直接生成。
打开控制面板,看ODBC连接,是不是有EXCEL格式?
 
//uses DBGridEhImpExp;
// saveDBGridEhToExportFile(TDBGridEhExportAsXLS,dbgrideh1,'c:/xx.xls',true);
 
FastReport里不是有一个控件可以把Table里的内容直接输出为电子表格文件?
 
后退
顶部