• delphi 数据导出到word


    procedure TFrmWeekAnalysisQry.BtnExportToExcelClick(Sender: TObject);
    var wordApp,WordDoc,WrdSelection:variant;
    strAdd:string;
    i,j,iRangeEnd,iStart,iEnd : integer;
    wdPar,wdRange:OleVariant;
    oShape, oChart,myCol: OleVariant;
    SumJHTonCount, SumWCTonCount, PJTS, PJZCSJ, YSSR, DuoJing: Currency;
    SumJHCarCount, SumWCCarCount: Integer;
    SumDJ,SumFDJ: Currency;//多经 非多经汇总
    begin
    wordApp := CreateOleObject('Word.Application');
    wordApp.Visible := true;
    wordDoc:=WordApp.Documents.Add();
    wordDoc.select;
    wrdSelection := WordApp.selection;
    strAdd:='%s年第%d周战略装车点生产经营分析';
    strAdd:= Format(strAdd, [FormatDateTime('YYYY', Date), WeekofYear(Date)]);
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
    wrdSelection.Font.bold := true;
    wrdSelection.Font.Size := 15;
    //wrdSelection.Font.UnderLine := 1; 下划线
    wrdSelection.TypeText(strAdd);
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.Font.bold := false;
    wrdSelection.Font.Size := 10;
    wrdSelection.Font.bold := false;
    wrdSelection.TypeText(FormatDateTime('MM月DD日', DateBegin.Date)+'-'+FormatDateTime('MM月DD日', DateEnd.Date));
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText('西安铁路局货运处');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphLeft;
    wrdSelection.Font.bold := true;
    wrdSelection.TypeText('1、战略装车点主要运营指标完成情况:');
    //从新设置字体
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphLeft;
    wrdSelection.Font.bold := false;
    wrdSelection.Font.Size := 10;
    wrdSelection.Font.UnderLine := 0;
    wdPar:=WordApp.ActiveDocument.Paragraphs.Add;
    wdRange:=wdPar.Range;
    wdRange := wordApp.ActiveDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wordDoc.Tables.Add(wdRange,cdsMain.RecordCount+ 2,11);
    //合并单元格不成功
    {iStart:=WordDoc.Tables.Item(1).Cell(1,1).Range.Start;
    //myCol:= WordDoc.Tables.Item(1).Cell(1,2);
    //myCol:= WordDoc.Tables.Item(1).Columns.Item(2);
    //iEnd:=myCol.Cells.Item(myCol.Cells.Count).Range.End;
    //iEnd:= WordDoc.Tables.Item(1).Cell(2,1).Range.Start;
    iEnd:= iStart+ 1;
    wdRange:=WordDoc.Range;
    wdRange.Start:=iStart;
    wdRange.End :=iEnd;
    wdRange.Cells.Merge; }
    //插入数据
    wordDoc.Tables.Item(1).Cell(1,1).Range.Text:= '序号';
    wordDoc.Tables.Item(1).Cell(1,2).Range.Text:= '车站';
    wordDoc.Tables.Item(1).Cell(1,3).Range.Text:= '品类';
    wordDoc.Tables.Item(1).Cell(1,4).Range.Text:= '周计划车数';
    wordDoc.Tables.Item(1).Cell(1,5).Range.Text:= '周计划万吨';
    wordDoc.Tables.Item(1).Cell(1,6).Range.Text:= '周完成车数';
    wordDoc.Tables.Item(1).Cell(1,7).Range.Text:= '周完成万吨';
    wordDoc.Tables.Item(1).Cell(1,8).Range.Text:= '平均停时(小时)';
    wordDoc.Tables.Item(1).Cell(1,9).Range.Text:= '平均装车时间(小时)';
    wordDoc.Tables.Item(1).Cell(1,10).Range.Text:= '运输收入(万元)';
    wordDoc.Tables.Item(1).Cell(1,11).Range.Text:= '多经毛利测算(万元)';
    cdsMain.First;
    SumJHTonCount:= 0;
    SumWCTonCount:= 0;
    PJTS:= 0;
    PJZCSJ:= 0;
    YSSR:= 0;
    SumJHCarCount:= 0;
    SumWCCarCount:= 0;
    DuoJing:= 0;
    for i:= 2 to cdsMain.RecordCount+ 1 do
    begin
    wordDoc.Tables.Item(1).Cell(i,1).Range.Text:= cdsMain.FieldByName('ROWNUM').AsString;
    wordDoc.Tables.Item(1).Cell(i,2).Range.Text:= cdsMain.FieldByName('UPNAME').AsString;
    wordDoc.Tables.Item(1).Cell(i,3).Range.Text:= cdsMain.FieldByName('PLNAME').AsString;
    wordDoc.Tables.Item(1).Cell(i,4).Range.Text:= cdsMain.FieldByName('PLANCARCOUNT').AsString;
    wordDoc.Tables.Item(1).Cell(i,5).Range.Text:= cdsMain.FieldByName('PLANTONCOUNT').AsString;
    wordDoc.Tables.Item(1).Cell(i,6).Range.Text:= cdsMain.FieldByName('CARCOUNT').AsString;
    wordDoc.Tables.Item(1).Cell(i,7).Range.Text:= cdsMain.FieldByName('TONCOUNT').AsString;
    wordDoc.Tables.Item(1).Cell(i,8).Range.Text:= cdsMain.FieldByName('AVGSTOP').AsString;
    wordDoc.Tables.Item(1).Cell(i,9).Range.Text:= cdsMain.FieldByName('AVGLOAD').AsString;
    wordDoc.Tables.Item(1).Cell(i,10).Range.Text:= cdsMain.FieldByName('TRANSINCOME').AsString;
    wordDoc.Tables.Item(1).Cell(i,11).Range.Text:= cdsMain.FieldByName('DUOJING').AsString;
    SumJHTonCount:= SumJHTonCount+ cdsMain.FieldByName('PLANTONCOUNT').AsCurrency;
    SumWCTonCount:= SumWCTonCount+ cdsMain.FieldByName('TONCOUNT').AsCurrency;
    PJTS:= PJTS+ cdsMain.FieldByName('AVGSTOP').AsCurrency;
    PJZCSJ:= PJZCSJ+ cdsMain.FieldByName('AVGLOAD').AsCurrency;
    YSSR:= YSSR+ cdsMain.FieldByName('TRANSINCOME').AsCurrency;
    SumJHCarCount:= SumJHCarCount+ cdsMain.FieldByName('PLANCARCOUNT').AsInteger;
    SumWCCarCount:= SumWCCarCount+ cdsMain.FieldByName('CARCOUNT').AsInteger;
    DuoJing:= DuoJing+ cdsMain.FieldByName('DUOJING').AsCurrency;
    cdsMain.Next;
    end;
    Inc(i);
    wordDoc.Tables.Item(1).Cell(i,2).Range.Text:= '合计';
    wordDoc.Tables.Item(1).Cell(i,3).Range.Text:= '';
    wordDoc.Tables.Item(1).Cell(i,4).Range.Text:= IntToStr(SumJHCarCount);
    wordDoc.Tables.Item(1).Cell(i,5).Range.Text:= CurrToStr(SumJHTonCount);
    wordDoc.Tables.Item(1).Cell(i,6).Range.Text:= IntToStr(SumWCCarCount);
    wordDoc.Tables.Item(1).Cell(i,7).Range.Text:= CurrToStr(SumWCTonCount);
    if cdsMain.RecordCount> 0 then
    begin
    wordDoc.Tables.Item(1).Cell(i,8).Range.Text:= CurrToStr(PJTS/ cdsMain.RecordCount);
    wordDoc.Tables.Item(1).Cell(i,9).Range.Text:= CurrToStr(PJZCSJ/ cdsMain.RecordCount);
    end;
    wordDoc.Tables.Item(1).Cell(i,10).Range.Text:= CurrToStr(YSSR);
    wordDoc.Tables.Item(1).Cell(i,10).Range.Text:= CurrToStr(DuoJing);

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    if SumJHTonCount<= 0 then SumJHTonCount:= SumWCTonCount;
    //if EdtQJHF.Value<= 0 then EdtQJHF.Value:= SumWCTonCount;
    //if SumJHCarCount<= 0 then SumJHTonCount:= SumWCCarCount;
    wrdSelection.TypeText('(1)全局28个战略装车点共装车'+ IntToStr(SumWCCarCount)+'辆,完成计划的'+ GetPercent(SumWCCarCount , SumJHCarCount)+';发送货物'
    +CurrToStr(SumWCTonCount)+'万吨,完成计划的'+GetPercent(SumWCTonCount , SumJHTonCount)+',占全局货发总量的'
    +GetPercent(SumWCTonCount , EdtQJHF.Value)+ '。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
    wrdSelection.TypeText('图-6 战略装车点装车数完成情况');

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 51;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '计划';
    oChart.Application.DataSheet.Cells[3,1].Value:= '实际完成';
    //添加列标题
    oChart.Application.DataSheet.Cells[1,2].Value:= '上周';
    oChart.Application.DataSheet.Cells[1,3].Value:= '本周';

    oChart.Application.DataSheet.Cells[2, 2].Value:= LastPlanCarCount;
    oChart.Application.DataSheet.Cells[2, 3].Value:= SumJHCarCount;
    oChart.Application.DataSheet.Cells[3, 2].Value:= LastImplCarCount;
    oChart.Application.DataSheet.Cells[3, 3].Value:= SumWCCarCount;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wrdSelection.TypeText('图-7 战略装车点货物发送量完成情况');
    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 51;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '计划';
    oChart.Application.DataSheet.Cells[3,1].Value:= '实际完成';
    //添加列标题
    oChart.Application.DataSheet.Cells[1,2].Value:= '上周';
    oChart.Application.DataSheet.Cells[1,3].Value:= '本周';

    oChart.Application.DataSheet.Cells[2, 2].Value:= LastPlanTonCount;
    oChart.Application.DataSheet.Cells[2, 3].Value:= SumJHTonCount;
    oChart.Application.DataSheet.Cells[3, 2].Value:= LastImplTonCount;
    oChart.Application.DataSheet.Cells[3, 3].Value:= SumWCTonCount;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wrdSelection.TypeText('图-8 战略装车量占货物发送量情况');
    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 5;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '发送万吨';
    //添加列标题
    oChart.Application.DataSheet.Cells[1,2].Value:= '战略装车点';
    oChart.Application.DataSheet.Cells[1,3].Value:= '其他装车';
    oChart.Application.DataSheet.Cells[2, 2].Value:= SumWCTonCount;
    oChart.Application.DataSheet.Cells[2, 3].Value:= EdtQJHF.Value;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wrdSelection.TypeText('图-9 战略装车量分品类完成情况');
    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 5;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '发送万吨';
    //添加列标题
    cdsGroupByPL.First;
    for i:= 2 to cdsGroupByPL.RecordCount+ 1 do
    begin
    oChart.Application.DataSheet.Cells[1,i].Value:= Trim(cdsGroupByPL.FieldByName('PLNAME').AsString);
    oChart.Application.DataSheet.Cells[2, i].Value:= cdsGroupByPL.FieldByName('TONCOUNT').AsCurrency;
    cdsGroupByPL.Next;
    end;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wrdSelection.TypeText(' (2)货车停留时间平均为'+ GetDiv(PJTS,cdsMain.RecordCount)+'小时,较考核目标超'+GetOverloadTime(PJTS,cdsMain.RecordCount,5)+'小时,'
    +'较全局平均停时减少2.8小时;平均装车作业时间'+ GetDiv(PJZCSJ, cdsMain.RecordCount)+'小时,较考核目标超'+GetOverloadTime(PJZCSJ,cdsMain.RecordCount,2)+'小时。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (3)路局多经参与经营的12个战略装车点,本周总计完成'+ IntToStr(SumWCCarCount)
    +'车,比上周'+ IntToStr(Trunc(LastImplCarCount))+'车多装'+ IntToStr(Trunc(SumWCCarCount- LastImplCarCount))+'车,增加了'
    +GetPercent(SumJHCarCount- LastImplCarCount, LastImplCarCount)+',日均装车'+GetDiv(SumWCTonCount, Trunc(DateEnd.Date-DateBegin.Date+ 1))
    +'车。占全局战略装车点发送总量的'+ GetPercent(SumWCCarCount, EdtQJHF.Value)+'。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' 3、毛利分析:本周实现毛利'+ CurrToStr(DuoJing)+'万元,和上周基本持平。');
    SumDJ:= 0;
    SumFDJ:= 0;
    cdsMain.First;
    with cdsMain do
    begin
    DisableControls;
    while not Eof do
    begin
    if FieldByName('DJCY').AsInteger= 0 then
    SumDJ:= SumDJ+ FieldByName('TONCOUNT').AsCurrency
    else
    SumFDJ:= SumFDJ+ FieldByName('TONCOUNT').AsCurrency;
    cdsMain.Next;
    end;
    EnableControls;
    end;
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
    wrdSelection.TypeText('图-10 多经参与战略装车情况');
    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 5;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '发送吨';
    //添加列标题
    oChart.Application.DataSheet.Cells[1,2].Value:= '多经参与经营发送吨';
    oChart.Application.DataSheet.Cells[1,3].Value:= '其他战略装车点发送吨';
    oChart.Application.DataSheet.Cells[2, 2].Value:= SumDJ;
    oChart.Application.DataSheet.Cells[2, 3].Value:= SumFDJ;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.selection.TypeParagraph;//换行
    wrdSelection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;
    wrdSelection.TypeText('图-11 多经参与战略装车点经营收入(万元)');
    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);

    oShape:= wordApp.Selection.InlineShapes.AddOleObject(ClassType:='MSGraph.Chart.8',FileName:='',LinkToFile :=False,DisplayAsIcon :=False);
    oChart:= oShape.OleFormat.Object;
    oChart.Application.DataSheet.Cells.Clear;
    oChart.ChartArea.Font.Size:= 8;
    oChart.Application.Update;
    oChart.ChartType:= 51;// 1是面积图 4是线形图 5是饼图 51是柱状图
    //添加行标题
    oChart.Application.DataSheet.Cells[2,1].Value:= '收入(万元)';
    //添加列标题
    oChart.Application.DataSheet.Cells[1,2].Value:= '本周';
    oChart.Application.DataSheet.Cells[1,3].Value:= '上周';
    oChart.Application.DataSheet.Cells[2, 2].Value:= 319.14;
    oChart.Application.DataSheet.Cells[2, 3].Value:= 314.96;
    oChart.Application.Update;
    oChart.Application.Quit;

    wordApp.Selection.EndKey(wdStory,EmptyParam);
    wdPar := wordApp.ActiveDocument.Paragraphs.Add;
    wdRange := wordApp.activeDocument.Content;
    wdRange.Collapse(wdCollapseEnd);
    wrdSelection.TypeText(' (4)装车分析:与上周一样,全局仅有黄陵、安口南两个战略装车点到达日均装运一列的要求,'
    +'占全局战略装车点总数的7%。周装车少于100车的有梅家坪、白水江、燕子砭、咸阳西4个点。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText('2.存在问题及分析:');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (1)全局共有14个装车点为完成周装车计划。完成比例在50%以下的有桑树坪、合阳、白水江、燕子砭4个战略装车点,占总数的14%');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' 主要原因有四个方面。一是空出来源紧张,不能满足日均装车需求。装运大宗货源煤炭、石油需要的敞车、罐车缺口较大。'
    +'如牛家梁在请求车5418车的情况下,仅承认了916车;柞水、官渡、三桥也存在此类原因。本周共产生坏车及过期车2104量,'
    +'修复使用1745车。三是停限装原因,战略装车点请求车兑现率仅为41%。四是货源依旧不足。铁矿石、焦炭市场不好影响装车。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (2)一是装车速度较慢,影响装车时间,造成平均停时较大,如合阳点专用线装车为漏斗漏煤,装车速度较快,平煤采取刮板刮平后,'
    +'人工平顶,速度较慢,引起停时较大。二是坏车修复时间长,也是引起停时较大的一个重要原因。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText('3.战略装车点下周重点工作:');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (1)加大货源组织工作。广泛宣传战略装车点优势,公布资源受理电话、去向、运输品类和开行时间,在货运计划、配空车'
    +'等方面予以优惠政策,重点做好新建战略装车点瑶曲、安口南的货源组织工作,开发战略装车点新货源,保证装车上量。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (2)提高承认车兑现率。对组织不力造成承认车落空的进行认真分析,纳入考核并追究管理责任。调度、运输、货运部门要加强协作,'
    +'落实战略装车点计划、承认、配空、挂运四优先制度。');
    wordApp.selection.TypeParagraph;//换行
    wrdSelection.TypeText(' (3)大力压缩等待时间。与专用线加强协调,增强战略装车点装车、平顶、加固车门人员力量,压缩撞车后的整理等待时间。');
    end;

  • 相关阅读:
    Memcached 内存分配机制介绍
    PHP与Memcached服务器交互的分布式实现源码分析
    yii 操作cookie
    Python urllib2递归抓取某个网站下图片
    mysql 知识 show status
    要读的书培根说:历史使人明智,诗词使人巧慧,算学使人精密,哲理使人深刻,伦理学人庄重,逻辑修辞使人善辩。
    思考的技术懒于求知的人没有生存空间
    相约星期二记录
    谁是最重要的人
    Netstat命令详解
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5242296.html
Copyright © 2020-2023  润新知