怎么样才能快速的将QUERY 中的数据导入到EXCEL中?

tlfangqing 2003-10-20 08:21:57
我自己编写了一个进销存软件,可是由于每日由上万条的销售记录,要导入到EXCEL要花很长的时间!!!!哪位大侠知道如何解决?
...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlfangqing 2003-11-01
  • 打赏
  • 举报
回复
hmily1688(流浪在中国_戒网中...) 大侠的方法要求我的QUERY中的表必须是完全路径的,
比如"select * from bgds"必须写成"select * from [POS].[dbo].[bgds]",必须要大改
我写的程序,所以还是没有用此方法,不过我在以后的程序中可借鉴.
hmily1688 2003-10-25
  • 打赏
  • 举报
回复
是不是你的条形码位数太长,导出都成了科学计数法的形式啊,也很好搞定吧,
pwzhu666 2003-10-24
  • 打赏
  • 举报
回复
up
NiceyMeng 2003-10-24
  • 打赏
  • 举报
回复
全部选中,Ctrl+C Ctrl+V
tlfangqing 2003-10-24
  • 打赏
  • 举报
回复
hmily1688(流浪在中国) 的方法很快,但是全是数字的格式,我的商品条形码导出不正确,该咋办呢?
hmily1688 2003-10-20
  • 打赏
  • 举报
回复
给你一个思路,用存储
create procedure to_excel
@sql varchar(500)
as
declare @cmd varchar(500)
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout c:\temp.xls -c -S you_servername -U sa -P you_password'
exec master..xp_cmdshell @cmd

GO
这个存储过程我原来用的,我手头的机子没有excel没法测试,你自己再查查帮助
hnhb 2003-10-20
  • 打赏
  • 举报
回复
function ExportToExcel(Header: String;
vDataSet: TDataSet): Boolean;
var
I,VL_I,j: integer;
S,SysPath: string;
MsExcel:Variant;
begin
Result:=true;
if Application.MessageBox('您确信将数据导入到Excel吗?','提示!',MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
begin
SysPath:=ExtractFilePath(application.exename);
with TStringList.Create do
try
vDataSet.First ;
S:=S+Header;
add(s);
s:='';
For I:=0 to vDataSet.fieldcount-1 do
begin
If vDataSet.fields[I].visible=true then
S:=S+#9+vDataSet.fields[I].displaylabel;
end;
system.Delete(s,1,1);
add(s);
while not vDataSet.Eof do
begin
S := '';
for I := 0 to vDataSet.FieldCount -1 do
begin
If vDataSet.fields[I].visible=true then
S := S + #9 + vDataSet.Fields[I].AsString;
end;
System.Delete(S, 1, 1);
Add(S);
vDataSet.Next;
end;
Try
SaveToFile(SysPath+'\Tem.xls');
Except
ShowMessage('写文件时发生保护性错误,Excel 如在运行,请先关闭!');
Result:=false;
exit;
end;
finally
Free;
end;
Try
MSExcel:=CreateOleObject('Excel.Application');
Except
ShowMessage('Excel 没有安装,请先安装!');
Result:=false;
exit;
end;
Try
MSExcel.workbooks.open(SysPath+'\Tem.xls');
Except
ShowMessage('打开临时文件时出错,请检查'+SysPath+'\Tem.xls');
Result:=false;
exit;
end;
MSExcel.visible:=True;
for VL_I :=1 to 4 do
MSExcel.Selection.Borders[VL_I].LineStyle := 0;
MSExcel.cells.select;
MSExcel.Selection.HorizontalAlignment :=3;
MSExcel.Selection.Borders[1].LineStyle := 0;

MSExcel.Range['A1'].Select;
MSExcel.Selection.Font.Size :=24;

J:=0 ;
for i:=0 to vdataset.fieldcount-1 do
if vDataSet.fields[I].visible then
J:=J+1;

VL_I :=J;
MSExcel.Range['A1:'+F_ColumnName(VL_I)+'1'].Select;
MSExcel.Range['A1:'+F_ColumnName(VL_I)+'1'].Merge;
end
else
Result:=false;
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧