XlsReadWriteII EXCEL Cell 单元数据读写

news2025/1/17 21:40:49

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相关的属性。例如:页面、打印机等属性。

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

    二、Sheets


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

// 页面参数
  XLS.Sheets[0].PrintSettings.papersize:=psA4;      // A4纸
  XLS.Sheets[0].PrintSettings.MarginTopCm:=1;       // 顶边距
  XLS.Sheets[0].PrintSettings.MarginLeftCm:=1;      // 左边距
  XLS.Sheets[0].PrintSettings.MarginRightCm:=1;     // 右边距
  XLS.Sheets[0].PrintSettings.MarginBottomCm:=1;    // 底边距
  XLS.Sheets[0].Zoom:=percent;                      // 浏览显示比例
// 初始化  Sheet1
  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   

  With XLS.Sheets[0].Range.ItemsRef['A1:G1'] do             // 合并单元
  begin
    .......
  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,指定区域

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

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

var iColLast,                  // 最后一列
    iColNow,                   // 当前操作的列
    iRowNow,                   // 当前操作的行
    iCol1,                     // 操作区域Cell1的列
    iCol2,                     // 操作区域Cell1的行
    iRow1,                     // 操作区域Cell2的列
    iRow2 : integer;           // 操作区域Cell2的行

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

begin
  iColLast:=15;                // 指定有效列数  
  iColNow:=0;                  // 从首列开始
  iRowNow:=0                   // 从首行开始
  ......
  iRowNow:=iRowNow+1;          // 从首行开始
  iColNow:=0;                  // 从首列开始
  for i:=0 to iColLast-1 do    // 循环列序列
  begin 
    ......
    iColNow:=iColNow+1;        // 从首行开始循环
//  or i 列的序列号
    ......
  end;
end;

  待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/178185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day06 C++STL入门基础知识三——String容器(下)比较-存取-插入-删除-子串获取【全面深度剖析+例题代码展示】

永远相信,美好的事情即将发生! 文章目录1. 比较操作1.1 比较方式1.2 函数原型1.3 代码展示2. 字符读写2.1 字符读入/访问2.1.1 方式2.1.2 代码展示2.2 修改字符2.2.1 方式2.2.2 代码展示3. 插入和删除3.1 函数原型3.2 代码展示4. 截取子串(比较实用!!!)4…

蓝桥杯STM32G431RBT6学习——定时器输入捕获

蓝桥杯STM32G431RBT6学习——定时器输入捕获 前言 从省赛的题目来看,对于定时器输入捕获这块几乎不考,但是为了知识的完整性及避免万一,依旧有了解的必要。国信长天开发板上的定时器捕获主要针对于NE555波形发生器的方波进行频率、脉宽等测…

恶意代码分析实战 3 IDA Pro

利用IDA PRO分析Lab05-01.dll 实验目的 利用IDA Pro分析Lab05-01.dll中发现的恶意代码,回答以下问题: DLLMain的地址是什么? 可以空格转入反汇编查看DLLMain地址,或者 DLLMain的地址是.text:0x1000D02E。 使用Imports窗口并浏…

这几个步骤,让你的电脑避免卡顿~

C盘主要是系统运行的存储空间,如果C盘装满了东西,那就意味着电脑的存储空间小,电脑运行就会更慢。😯 另外,桌面上的文件也属于C盘,所以桌面也不要放太多东西。除装机时候的一些必要软件,后期装的…

SpringBoot切换数据源

基本使用添加依赖<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.3.0</version> </dependency>数据源配置spring:datasource:dynamic:primary: fir…

【多元统计分析】Python实现对应分析

&#xff08;一&#xff09;题目要求 数据集包含地区生产总值的四个相关指标&#xff1a;x1劳动者报酬&#xff0c;x2生产税净额&#xff0c;x3固定资产折旧&#xff0c;x4营业盈余。对各个地区生产总值进行对应分析&#xff0c;揭示不同地区的生产总值构成特征。要求&#xf…

对多线程中线程池的理解

一.概念理解何为线程池&#xff1f;线程池的释义正如它的命名&#xff1a;专门用来存放线程的池子&#xff08;集合类&#xff09;&#xff0c;也就是将线程存储于集合类&#xff0c;使用时从线程池中直接获取&#xff0c;使用结束后将线程放回集合类即可&#xff0c;这样就避免…

macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像

本站下载的 macOS Ventura 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。 2023 年 1 月 23 日&#xff08;北京时间 24 日凌晨&#xff09;&#xff0c;m…

基于电流型磁链观测器的异步电机矢量控制学习

导读&#xff1a;本期主要介绍电流型磁链观测器&#xff08;current flux observer&#xff09;在不同坐标系下的表现形式&#xff0c;应用在异步电机矢量控制系统中。如需要文中的仿真模型&#xff0c;关注微信公众号&#xff1a;浅谈电机控制&#xff0c;获取。一、引言磁链估…

JavaEE day4 初识HTML+总结3

FORM表单的常见type属性 FORM表单的tpye属性非常多&#xff0c;这里只介绍常见的几个&#xff1a; text &#xff1a; 输入普通文本&#xff0c;例如登录注册下的用户名 password &#xff1a; 输入密码文本&#xff0c;例如登录注册下的密码&#xff0c;隐藏用户的输入 ra…

如何使用JDBC操作数据库,JDBC实战案例详细解读

1. 前言 前面 3 篇 JDBC 入门级基础文章中&#xff0c;我们已经探讨了什么是 JDBC&#xff0c;如何使用JDBC 操作数据库&#xff0c;JDBC API 详细解读&#xff0c;以及数据库连接池的基础等。文章带来的反馈还不错&#xff0c;今天我们使用前面学习的内容做一个实战案例训练。…

贪心 135. 分发糖果

135. 分发糖果 难度困难1086 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&…

uboot启动流程简要版(基于armv7)

uboot启动流程&#xff08;armv7&#xff09; uboot介绍 uboot就是一段引导程序&#xff0c;在加载系统内核之前&#xff0c;完成硬件初始化&#xff0c;内存映射&#xff0c;为后续内核的引导提供一个良好的环境。 uboot是bootloader的一种&#xff0c;全称为universal boot…

二叉树基础oj练习

1.单值二叉树 题目: 力扣https://leetcode.cn/problems/univalued-binary-tree/ 思路: 单值二叉树 root和左右孩子的值相等 左子树是单值二叉树 右子树是单值二叉树 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeN…

CSS 艺术之心形-彩虹-加载动画

CSS 艺术之心形-彩虹-加载动画&#xff08;居中抖动问题&#xff09;参考描述效果HTMLCSS重置元素的部分默认样式bodyli动画定义指定animationul居中抖动问题代码总汇参考 项目描述搜索引擎BingMDNMDN Web Docs 描述 项目描述Edge109.0.1518.61 (正式版本) (64 位) 效果 HTML…

【Vue笔记】Vue中默认插槽slot、具名插槽slot、自定义组件的v-model属性的使用

这篇文章&#xff0c;主要介绍Vue中默认插槽slot、具名插槽slot、自定义组件的v-model属性的使用。 目录 一、插槽slot介绍 1.1、默认插槽 1.2、具名插槽 &#xff08;1&#xff09;如何定义具名插槽&#xff1f;&#xff1f;&#xff1f; &#xff08;2&#xff09;如何使…

3DMAX纹理插件BerconMaps使用教程

BerconMaps是3dMax的第三方纹理插件。它添加了五个新的3dMax纹理贴图&#xff1a;噪波&#xff08;Noise&#xff09;、木纹&#xff08;Wood&#xff09;、瓷砖&#xff08;Tile&#xff09;、失真&#xff08;Distortion&#xff09;和渐变&#xff08;Gradient&#xff09;。…

linux配置samba服务

文章目录samba服务第一步&#xff1a;下载samba服务第二步&#xff1a;开启服务&#xff0c;查看服务状态第三步&#xff1a;在文件夹系统查看第四步&#xff1a;设置samba的配置文件第五步&#xff1a;再次去尝试连接linux服务共享修改smab服务的配置设置samba服务的用户名和密…

verilog实现计算器设计

该实验为用verilog编写的一个运算系统,其功能是实现4位整数的加、减、乘、除运算。运算时通过矩阵键盘输入运算类型和运算所需要的数据,然后通过内部电路处理,将计算的结果送于数码管或LCD1602显示。 工程截图如下: 本设计分为两个子模块,按键输入和数码管输出。 还有LC…

python字符串

python字符串 文章目录python字符串一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.字符串创建2.转义字符3.运算符4.格式化5.三引号6.内建函数总结一、实验目的 掌握字符串的用法 二、实验原理 字符串 字符串是一种序列&#xff0c;用于表示和存储文本。py…