• 用Delphi将数据导入到Excel并控制Excel


    一、调用Excel的方法:一般情况下有两种方法调用Excel:
    1、  直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
    2、动态创建Excel文件:首先创建 Excel 对象,使用ComObj,Excel2000:
    var ExcelApp: Variant;
    ExcelApp := CreateOleObject( 'Excel.Application' );

    二、导入数据:在程序中,我们可以将查询到的数据(SQL、Access、)导入到Excel中。例如:用Adoquery查询Access中的数据:
    1、先查到所需的数据;
    2、导入:i:=1;
    Adoquery.First;
                   while not Adoquery.Eof do
                     Begin
                       ExcelApp.WorkSheets[1].Cells[i,1].Value := i;//添加序号的值
    ExcelApp.WorkSheets[1].Cells[i,2].Value := Adoquery.FieldByName('cp_name').AsString;
                       ……
                       Inc(i);
    Adoquery.Next;
                     End;
    当然也可以把Adotable、Adoquery、Table、Query等组件的数据导入到Excel中。

    三、Excel的处理:如果在你已知Excel格式的情况下,可以控制Excel,如下:
    1、 显示当前窗口:ExcelApp.Visible := True;
    2、 更改 Excel 标题栏:ExcelApp.Caption := '标题内容';
    3、 添加新工作簿:ExcelApp.WorkBooks.Add;
    4、 设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;
    5、 给单元格赋值:ExcelApp.Cells[1,1].Value := '第一行第一列';
    6、 设置指定列的宽度(单位:字符个数),以第一列为例:
    ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
    7、 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
    ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
    8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4;    上面的文字如果不指定行坐标,那么就会设置所有行数据居中显示。
        文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;
    9、 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;
    b. ExcelApp.ActiveSheet.Columns[1].Insert;
    10、 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;
    b. ExcelApp.ActiveSheet.Columns[1].Delete;  
    11、合并单元格:ExcelApp.worksheets[1].range[A1:F8'].Merge(abc);注:要声明变量abc: Variant;
    12、竖行显示文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:= xlVertical;
    13、单元格加边线:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle := 1;
    14、在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
    15、在第4列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
    16、指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
    1-左    2-右   3-顶    4-底   5-斜( )     6-斜( / )
    17、拷贝操作:a.拷贝整个工作表:ExcelApplication1.ActiveSheet.Used.Range.Copy;
    b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
                      c.从A1位置开始粘贴:ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
    d.从文件尾部开始粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;
    18、清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
    19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved then
                    ExcelApp.ActiveSheet.PrintPreview;
    20、工作表另存为:ExcelApp.SaveAs( 'C:ExcelDemo1.xls' );
    21、放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;
    22、关闭工作簿:ExcelApp.WorkBooks.Close;
    23、退出 Excel:ExcelApp.Quit;
    下面是有关打印页面控制的语句:
        24、设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
    ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
    ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
    ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
    ExcelApp.ActiveSheet.Rows[1].Font.size:=10;
    //设置指定单元格的颜色
    ExcelApp.Cells[j,maxCol].Interior.Color := clRed;
    25、进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';
    b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '共&N页 第&P页';
                          c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
    d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
                          e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
    f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
                          g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
    h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
                          i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
    j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
                          k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
    26、打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;
    27、打印输出工作表:ExcelApp.ActiveSheet.PrintOut;
    对Excel的其他控制:
    28、excel的多单元格合计功能:ExcelApp..Cells[ARow, ACol].Formula 
    := '= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +');
    注:声明变量ARow, ACol: Integer;
    29、打开已经存在的Excel文件:
    ExcelApplication1.Workbooks.Open (path);
    30、给EXCEL单元格添加批注
    ExcelApp.WorkSheets[1].Cells[j,maxCol].AddComment('重工时间有误!');
    31、ExcelApp.Cells.Formula 判断单元格是否为空。
    32、为单元格指定超链接,这个是到URL的。
    ExcelApp.ActiveSheet.Cells[3,17].value :='=HYPERLINK("http://www.sohu.com","搜狐")';
      这个是可以跳转到sheet的
    ExcelApp.ActiveSheet.Cells[3,7].value :='=HYPERLINK("[Templat.xls]sheet2!A1","你的地址显示字")';
    Templat.xls是当前excel的名字,sheet2是目标sheet,A1是跳过去之后的光标坐标。
    本次增加32条
    注:在数据倒入Excel时不要边导入边修改,这样会使倒入到Excel的时间加长,一般最好是在倒入完数据后再调Excel的格式(例如页边距、单元个属性、文字属性)。
    原文参考:http://blog.csdn.net/u011354184/article/details/10966971。
    本文在实际操作中发现的一些问题基础上作部分修改。
    http://www.cnblogs.com/azhqiang/p/3696418.html
  • 相关阅读:
    收款 借贷
    Oracle Contracts Core Tables
    mtl_material_transactions.logical_transaction
    OM订单登记不了的处理办法
    子库存转移和物料搬运单区别
    WPF中使用DataGridView创建报表控件
    vi编辑器命令
    成绩管理系统中的成绩报表SQL
    ASP.Net中传递参数的常见方法
    MySQL的SET字段类型
  • 原文地址:https://www.cnblogs.com/findumars/p/7147615.html
Copyright © 2020-2023  润新知