关于导出Excel的技术,求救!有分了,:-)(100分)

  • 主题发起人 主题发起人 Grandboy
  • 开始时间 开始时间
G

Grandboy

Unregistered / Unconfirmed
GUEST, unregistred user!
有哪位大侠知道现在导出到Excel的技术哪个比较好呀,我不喜欢用OLE,因为太慢,而我的数据量太呀,时间难以忍受,还有就是要求有Excel环境,不爽,现在我用的XLSReadWrite来做,速度倒是可以的,但是数据量大的话导出后,用Excel打开时会出现一个"不同单元格的格式过多"的错误.不知道怎么样解决,有什么技术更好的吗?见者有分!
请诸位多多帮忙,拜托!
 
第三方控件dbgrideh有倒出功能,不错
 
是不是只能导出风格的呀,我想导出任何数据呀
而且格式 是我自己定的呀
 
;
ExcelApp.Visible[0] := false;
ExcelApp.Caption := '营业部单项排名';
ExcelApp.Workbooks.Add(gsExcelDir,0);
ExcelBook.ConnectTo(ExcelApp.Workbooks[1]);
ExcelSheet.ConnectTo(ExcelBook.Worksheets[1] as _worksheet);
qSelect.First;
ExcelSheet.Columns.ColumnWidth := 12;
//保存标题
for i := 1 to qSelect.FieldCountdo
begin
ExcelSheet.Cells.Item[1,i] := qSelect.Fields[i - 1].DisplayLabel;
end;
//保存内容
j := 2;
while not qSelect.Eofdo
begin
for i := 1 to qSelect.FieldCountdo
begin
ExcelSheet.Cells.Item[j,i] := qSelect.Fields[i - 1].AsString;
end;
qSelect.Next;
j := j + 1;
end;
ExcelSheet.SaveAs(strFileName);
ExcelSheet.Disconnect;
ExcelBook.Disconnect;
ExcelApp.Disconnect;
ExcelApp.Quit;
 
大家都推荐这个控件,它能实现什么样的功能呀,我要的速度和数据量大的稳定及灵活呀,它能满足吗,谢谢各位的支持!
 
dbgrideh 其中一个 特点就是针对数据量大的表
你可以试以下!!
一点小建仪[:)]
 
procedure Tfrmmain.B1Click(Sender: TObject);
var
i:integer;
mem:tstrings;
v1:string;
begin
daoq.Close;
daoq.Open;
if not savedialog1.Execute then
exit;
mem:=tstringlist.create;
mem.Clear;
for i:= 0 to (daoq.FieldCount-1)do
begin
v1:=v1+daoq.Fields.DisplayLabel+#9;
end;
mem.Add(v1);
daoq.First;
while not daoq.Eofdo
begin
v1:='';
for i:= 0 to (daoq.FieldCount-1)do
begin
if i=1 then
begin
v1:= v1+''''+daoq.Fields.AsString+''''+#9;
continue;
end;
v1:=v1+daoq.Fields.AsString+#9;
end;
mem.Add(v1);
daoq.next ;
end;
mem.SaveToFile(savedialog1.FileName);
with toolqdo
begin
close;
sql.Clear;
sql.Add('insert into czjl values(:name,:doing,:dotime,:object)');
params[0].AsString:=username;
params[1].AsString:='µ¼³ö';
params[2].AsDateTime:=now;
params[3].AsString:='µ¼³ö';
execsql;
end;
application.MessageBox( 'Êý¾Ýµ¼³ö³É¹¦£¡', 'Ìáʾ', MB_ICONASTERISK);
end;

此方法支持各种环境,你可以试试,我一直这样用,挺好
 
俺也需要此功能,我也试试。
 
保存成CSV文件好了,快。如非要导成XLS文件,用SQL SERVER的DTS导,非常快。
 
to 51100k:
这个方法好象就是存成CSV(或者说是TXT文件),不能把格式带出去呀,我要保证格式和原来一样,所以肯定得自己控制.
to whhtao:
我的不是数据的数据,也不是只把数据导出,要格式.而且我的不是数据库数据.
[red]请问一下还有没有更好的办法呀?多谢![/red]
 
只要execl支持就可以了,并且不受环境限制,你把扩展名改为xls,execl也不报错呀,它会把这个文件当作普通的execl文件的,实在想变成execl文件,在execl里另存为就是了,或者用用友的华表,等等,为什么非要拘泥在一种模式下呢,给我个理由先,还有用dcom很快,格式正确,华表不用环境支持
 
我这里有个方法,非常简单,一条SQL语句就可以,
加入ADOConnection,连好你的数据库,假如你表MyTable备份的C:/TT.XLS文件,
你可以这样
ADOConnection.Open;//连接;
ADOConnection.Execute('select * into [Excel 8.0;Database=C:/TT.XLS].TT from MyTable');
搞定了,请注意符号的书写,大小写不区分~!
 
我觉得以上的方法都不是很好,速度都存在一定的问题
而且设置格式也不是很好
以前我也是用上面的方法
前几日,在网上乱窜,发现一个控件,不错,可以导出成多种格式,速度也比上面所有的快
导出成EXCEL可以指定单元格格式、公式等,而且可以从DBGrid、DataSet、ListView、StringList等中直接导出
ftp://new:newnew@61.129.70.192/control/2003092812323529690.rar
 
来自:wanfangme, 时间:2003-9-27 16:24:00, ID:2204296
第三方控件dbgrideh有倒出功能,不错
====================================
能告诉一下如何使用的吗?
关键代码如何写呢?
 
DBGridEh的导出功能确实不错,但只能导出那几种格式
他的DEMO很详细,一看就知道怎么用了
 
to ygsoft:
能告诉我你这个控件在哪有得下呀!谢谢
 
去 www.51delphi.com 下载Dev Express公司的TcxDBGrid或dbgrideh。
 
你的數據量到底有多少?EXCEL最多只能存65536筆記錄呀,多了當然會出錯了,
不過用CSV格式倒沒有限制,導出到excel我一直是用代碼動態導出的,速度還可以;
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
937
DelphiTeacher的专栏
D
D
回复
0
查看
892
DelphiTeacher的专栏
D
后退
顶部