美文网首页程序员
Delphi使用SpreadSheet

Delphi使用SpreadSheet

作者: suikhan | 来源:发表于2018-12-13 16:33 被阅读22次

    suikhan, 2018年12月13日 于石门

    1、开发环境

    以Delphi7为例,使用DevExpress套件中的ExpressSpreadSheet组件1.38版本进行开发设计。

    2、控件安装

    控件源码:

    DevExpress.ExpressSpreadSheet.v1.38.for.Delphi.BCB.Full.Source-SSG.rar

    这个源码在CSDN上也有,请直接点击下面的超链接自行下载:

    https://download.csdn.net/download/gfarmer/3465452

    请解压缩之后,按照如下控件包的顺序依次安装,并设置Delphi编译路径。

    顺序 控件名称 操作 帮助文件
    1 XP Theme Manager 编译
    2 ExpressGDI+ Library 编译
    3 ExpressLibrary 编译+安装
    4 ExpressSpreadSheet 编译+安装

    其中帮助采用的还是比较原始的hlp格式,如果您的操作系统是win10/8/7等,只要出不来帮助,就请按照这个文章进行设置:

    []

    3、控件使用

    学习资料请参考https://blog.csdn.net/hotmee/article/category/5948851,这个大神写了几篇相关文章,不过都是C#的,需要自己研究对照。

    <span style="color: red">最重要的学习资料就是控件源码路径下的帮助hlp文件,务必要详细阅读。</span>

    3.1 合并单元格

    var
      st : TcxSSBookSheet;
      r : TRect;
    begin
      st := book.Pages[0];
      r.Left := 1;  //第二列,0起始
      r.Top := 1;   //第二行
      r.Right := 5; //第六列
      r.Bottom := 2;//第三行
      st.SetMergedState(r, True); //第二个参数true标识合并单元格
    end;
    

    3.2 单元格操作

    var
      st : TcxSSBookSheet;
      cell1, cell2 : TcxSSCellObject;
    begin
      st := book.Pages[0];
    
      cell1 := st.GetCellObject(0, 0); //A1
      cell1.Text := '1';
      cell1 := st.GetCellObject(1, 0); //B1
      cell1.Text := '2';
      cell1 := st.GetCellObject(2, 0); //C1
      cell1.SetCellText('=A1+B1', True); //公式,第二个参数默认为False,如果为True可以重新计算
    
      cell2 := st.GetCellObject(1, 1); //C2
      cell2.SetCellText(cell1.Text); //TEXT方式获取到的是单元格的公式
      cell2 := st.GetCellObject(1, 2); //C3
      cell2.SetCellText(cell1.CellValue); //CellValue获取的是单元格的值
    
      cell2 := st.GetCellObject(2, 2); //C3
      cell2.SetCellText('杨雨田');
      //画左右上下四条线
      cell2.Style.Borders.Left.Style := lsMedium;
      cell2.Style.Borders.Right.Style := lsThin;
      cell2.Style.Borders.Top.Style := lsThick;
      cell2.Style.Borders.Bottom.Style := lsDouble;
      {
        lsDefault,  lsThin, lsMedium, lsDashed, lsDotted,
        lsThick,  lsDouble, lsHair, lsMediumDashed, lsDashDot, lsMediumDashDot,
        lsDashDotDot, lsMediumDashDotDot, lsSlantedDashDot, lsNone
      }
      
      //设置背景色,前景色等
      cell2.Style.Brush.AssignInfo(fsSolid, 2, 5);
    
      //设置字体
      cell2.Style.Font.AssignInfo('微软雅黑', 40, [fsBold], GB2312_CHARSET, 5);
    
      //对齐
      cell2.Style.HorzTextAlign := haRIGHT; {haGENERAL, haLEFT, haCENTER, haRIGHT, haFILL, haJUSTIFY}
      cell2.Style.VertTextAlign := vaBOTTOM; {vaTOP, vaCENTER, vaBOTTOM, vaJUSTIFY}
      
      //设置行高度
      st.Rows.Size[0] := 120;
      st.Rows.Size[1] := 80;
      st.Rows.Size[2] := 150;
    
      //设置列宽度
      st.Cols.Size[0] := 120;
      st.Cols.Size[1] := 80;
      st.Cols.Size[2] := 200;
    end;
    

    3.3 加载EXCEL/保存EXCEL

    begin
      book.SaveToFile('e:\abc.xlsx'); //导出
      book.LoadFromFile('e:\abc.xlsx'); //导入
    end;
    

    3.4 删除Sheet/增加Sheet

    procedure Del()
    begin
      book.DeleteSheet(0);
    end;
    
    procedure Add()
    begin
      book.AddSheetPage('第一页' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
    end;
    

    3.5 关于打印

    还没有找到好用的打印方法,暂时可以直接通过ShellExecute执行xls文件的print方法输出到打印机。

    相关文章

      网友评论

        本文标题:Delphi使用SpreadSheet

        本文链接:https://www.haomeiwen.com/subject/eksbhqtx.html