找回密码
 立即注册
查看: 1271|回复: 0

怎么把SQL表中的内容倒到EXCEL中

[复制链接]

6782

主题

8

回帖

2万

积分

管理员

积分
21777
发表于 2019-5-20 21:41:38 | 显示全部楼层 |阅读模式
const Con_stStr='''';
var d1,d2,s1:string;
     cun,i:integer;
begin
d1:=datetostr(datetimeFindfirst.date);
d2:=datetostr(dateTimeFindSecond.date);
cun:=adoqryfind.RecordCount;
try
   v:= CreateOleObject('Excel.Application');
   v.Visible := true;
   v.Workbooks.Add;//新建EXCEL文件
   v.worksheets[1].range['A1:K1'].Merge(True);//合并A1到L1
   v.worksheets[1].range['A3:K3'].Merge(true);
   v.Workbooks[1].WorkSheets[1].Name := '金星加油站'; //指定表的名称
   Sheet:= v.Workbooks[1].WorkSheets[1];//worksheet意思是指表里面的数
   Sheet.Cells[1,1] :='金星加油站';  //第一行第一格文字
   sheet.cells[3,1] :='报表日期:'+d1+'至'+d2;//报表日期
   Sheet.Cells[4,1] :='日  期';
   Sheet.Cells[4,2] :='矿  名';
   Sheet.Cells[4,3] :='煤票编号';
   Sheet.Cells[4,4] :='煤车编号';
   Sheet.Cells[4,5] :='净  重';
   Sheet.Cells[4,6] :='油  品';
   Sheet.Cells[4,7] :='数  量';
   Sheet.Cells[4,8] :='单  价';
   Sheet.Cells[4,9] :='金  额';
   Sheet.Cells[4,10] :='加油员';
   Sheet.Cells[4,11] :='开票员';

     for i:=1 to cun do
     begin
     sheet.cells[i+4,1]:=adoqryFind.Fieldbyname('日期').Asstring;
     //conststr+是在前面加了一个字符串,以使导出字符001不会在EXCEL中变在1
     sheet.cells[i+4,2]:=ConstStr+adoqryFind.FieldByName('矿名').AsString;
     sheet.cells[i+4,3]:=ConstStr+adoqryFind.Fieldbyname('收煤凭证编号').Asstring;
     sheet.cells[i+4,4]:=ConstStr+adoqryFind.Fieldbyname('煤车编号').Asstring;
     sheet.cells[i+4,5]:=adoqryFind.Fieldbyname('净重').Asstring;
     sheet.cells[i+4,6]:=adoqryFind.Fieldbyname('油品名称').Asstring;
     sheet.cells[i+4,7]:=adoqryFind.Fieldbyname('加油数量').Asstring;
     sheet.cells[i+4,8]:=adoqryFind.Fieldbyname('当日单价').Asstring;
     sheet.cells[i+4,9]:=adoqryFind.Fieldbyname('金额').Asstring;
     sheet.cells[i+4,10]:=adoqryFind.Fieldbyname('加油员').Asstring;
     sheet.cells[i+4,11]:=adoqryFind.Fieldbyname('开票员').Asstring;

     adoqryfind.Next; //使数据当前数据下移一条,不然导出数据全部为相同的第一条
     end;
     i:=i+1;//循环的变量增加原来要放在这啊,我一直以为应该加在end;里面
//----------设置EXCEL表的格式----------
         //设置边框
     s1:='A4:K'+IntToStr(cun+4);
     v.workbooks[1].worksheets[1].Range[s1].Borders.LineStyle :=1;
         //让列中文本自动适应宽度
     v.worksheets[1].Columns.AutoFit;
         //设置文字垂直、水平居中
     v.workbooks[1].worksheets[1].range['A1'].HorizontalAlignment := $FFFFEFF4;
     v.workbooks[1].worksheets[1].range['A1'].VerticalAlignment := $FFFFEFF4;
     v.workbooks[1].worksheets[1].range['A4:k4'].HorizontalAlignment := $FFFFEFF4;
     v.workbooks[1].worksheets[1].range['A4:k4'].VerticalAlignment := $FFFFEFF4;
         //加粗第1、2行文字
     sheet.Cells[1,1].Font.Bold:=true;
     sheet.cells[1,1].font.size:=20;
     v.workbooks[1].worksheets[1].Rows[1].Font.bold:=true; //这是加粗第一行
     v.worksheets[1].Rows[4].Font.bold:=true;          //加粗第3行
     cmdDateOuT.Enabled :=false;
except
   Showmessage('初始化Excel失败,可能没装Excel,或者其他错误;请重起再试。');
   v.DisplayAlerts := false;//是否提示存盘
   v.Quit;//如果出错则退出
   exit;
end;
Application.Restore;
Application.BringToFront;
end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表