小言_互联网的博客

XlsReadWriteII EXCEL Cell 单元数据读写

365人阅读  评论(0)

XlsReadWriteII EXCEL Cell 单元数据读写

    下面从编程的眼光,从XlsReadWriteII的角度,谈谈EXCEL的理解。回顾一下EXCEL发展史:
    1982年:微软推出了它的第一款电子表格软件:Multiplan。
    1985年:推出了EXCEL for Mac。
    1987年:推出了EXCEL 2 for windows。
    1990年:推出Excel3。 
    1992年:推出Excel4。
    1993年:推出Excel5,从此EXcel捆绑到了Microsoft office,Excel开始支持VBA(宏)。
    1995年:推出了Excel95,亦称Excel 7。
    1997年:推出了Excel97,亦称Excel 8。
    1999年:推出Excel2000,亦称Excel 9。
    2001年:推出Excel2001,亦称Excel 10。
    2003年:推出Excel2003,亦称Excel 11。
    2006年:推出Excel2007,亦称Excel 12。
    2010年:推出Excel2010,亦称Excel 14。
    2013年:推出Excel2013 - Microsoft Office 2013 亦称Office15。
    2016年:推出Excel2016 - Microsoft Office 2016 亦称Office16。
    2019年:推出Excel2019 - Microsoft Office 2019 亦称Office17。
    2020年:推出Excel2020 - Microsoft Office 2020 亦称Office18。
    2021年:推出Excel2021 - Microsoft Office 2021 亦称Office19。
    2022年:推出Excel2022 - Microsoft Office 2022 亦称Office20。
    .....
    以上,最关键的二个版本,分别是Excel 97和Excel 2007。
    Excel97,文件后缀名: .xls;
    Excel2007,文件后缀名: .xlsx;
    后续版本文件后缀名都是: .xlsx。

    从编程运用的角度,在软件的运用上,绝大多数软件都支持Excel97和Excel2007这二个版本。
    XlsReadWriteII(1-4)仅支持Excel97-2003,从XlsReadWriteII5开始支持Excel2007。这二个版本,是软件使用最多的版本。
    EXCEL文件是个二进制文件,内部数据是以类似XML。文件结构上是类似树的结构,根部是簿XLS,分支下属诺干个表Sheets。每个表,双由列、行阵列结构的单元Cell组成。各个表之间可以,调用数据。
    从编程的角度,就是对EXCEL进行读(原ECXEL文件)、写(创建EXCEL文件)操作。

    一、EXCEL


    这是EXCEL的根,主要记载EXCEL相关的属性。例如:页面、打印机等属性。


  
  1. var XLS:TXLSReadWriteII5;
  2. begin
  3. XLS:=TXLSReadWriteII5.Create(Sender);
  4. XLS.Version := xvExcel2007; // 版本 xvExcel97 Excel2007
  5. end;

    二、Sheets


    这是EXCEL的分支,至少一个、或多个。
    Sheets是组成数据集的场所。
    Sheets结构,就是Cell的阵列 


  
  1. // 页面参数
  2. XLS.Sheets[ 0].PrintSettings.papersize:=psA4; // A4纸
  3. XLS.Sheets[ 0].PrintSettings.MarginTopCm:= 1; // 顶边距
  4. XLS.Sheets[ 0].PrintSettings.MarginLeftCm:= 1; // 左边距
  5. XLS.Sheets[ 0].PrintSettings.MarginRightCm:= 1; // 右边距
  6. XLS.Sheets[ 0].PrintSettings.MarginBottomCm:= 1; // 底边距
  7. XLS.Sheets[ 0].Zoom:=percent; // 浏览显示比例
  8. // 初始化 Sheet1
  9. XLS.Sheets[ 0]. Name:= '表一'; // 给工作表命名

    三、Cell


    Cell是构建Sheets的基础,它包含了数据集的基础数据,以及Cell的相关属性。

    (一)指定Cell的二种方式

      1、单元格名称,这是EXCEL的通用命名方式

    (1)列名由A-Z,26个英文大写字母,组建的26进制序列文字。例如,第1列是A,第26列是Z,第27列是AA。
    (2)行名由1-0。10个数字,组建10进制数字。注意第1行是1。

注意:编程的序列是,0-(n-1)切记。
    (3)Cell命名:列名+行名。例如:A1指定第1列第1行,C4指定第1列第1行,
     例如:A1   C8   X12   


  
  1. With XLS.Sheets[ 0].Range.ItemsRef[ 'A1:G1'] do // 合并单元
  2. begin
  3. .......
  4. end;

     2、使用列与行的序列号,这是编辑通行的方式

     Col、Row,指定Cell位置,序列0-(n-1),n是列或行的总数。
     这是按编程语言习惯的命名方式:
    (1)列名序列为0-(n-1),首列0,尾列n-1。例如,第1列是0,第26列是25,第27列是26。
    (2)行名序列为1-(n-1),首行0,尾行 n-1。例如,第1列是0,第10列是9,最后一列是n-1。
    (3)Cell命名:直接指定列、行的序列号。例如:

     XLS.Sheets[0].AsFloat[iCol,iRow]:= 0.001;

    3、指定Cell的位置
    在编程时,函数指定Cell的值,有的参数是Cell的字符名称,有的是Col和Row的值:
    (1)字符名称(单元格名称)指定区域

  With XLS.Sheets[0].Range.ItemsRef['A1:T1'] do         // 通过2个Cell,指定Cell区域      

    (2)使用Col、Row,指定Cell位置

    XLS.Sheets[0].AsFloat[iCol,iRow]:= 0.001;                 // 指定Cell    

    (3)使用二个Cell的Col、Row,指定区域


  
  1.     with XLS.Sheets[ 0].MergedCells.Add do
  2.     begin
  3.       iMergedCol1:= 0;            // 第1列
  4.       iMergedRow1:= 2;           // 第3行
  5.       iMergedCol2:= 4;            // 第5列
  6.       iMergedRow2:= 6;           // 长7行
  7.     end

    四、实际操作  
    声明以下参数:


  
  1. var iColLast,                   // 最后一列
  2.     iColNow,                    // 当前操作的列
  3.     iRowNow,                   // 当前操作的行
  4.     iCol1,                     // 操作区域Cell1的列
  5.     iCol2,                     // 操作区域Cell1的行
  6.     iRow1,                     // 操作区域Cell2的列
  7.     iRow2 : integer;           // 操作区域Cell2的行

    在编程时,对Cell的操作,从首列、首行开始,按部就班进行。


  
  1. begin
  2.   iColLast:= 15;                 // 指定有效列数  
  3.   iColNow:= 0;                   // 从首列开始
  4.   iRowNow:= 0                   // 从首行开始
  5.   ......
  6.   iRowNow:=iRowNow+ 1;           // 从首行开始
  7.   iColNow:= 0;                   // 从首列开始
  8.   for i:= 0 to iColLast- 1 do     // 循环列序列
  9. begin
  10.   ......
  11.   iColNow:=iColNow+ 1;         // 从首行开始循环
  12. // or i 列的序列号
  13.   ......
  14. end;
  15. end;

  待续


转载:https://blog.csdn.net/lyhoo163/article/details/128752216
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场