Delphi TXLSReadWriteII2 带的demo中直接编辑XLS文件的例子
unit Unit1; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Tabs, Cell2,
{$ifdef ver140}
Variants,
{$endif}
XLSUtils2, XLSReadWriteII2; type TForm8 = class(TForm) Label1: TLabel; edFilename: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; dlgOpen: TOpenDialog; Button4: TButton; Grid: TDrawGrid; TabSet: TTabSet; lblCell: TLabel; edCell: TEdit; XLS: TXLSReadWriteII2; procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); procedure TabSetChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean); procedure GridGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); procedure GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); procedure GridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); private EditCol,EditRow: integer; EditText: string; function ColToText(Col: integer): string; procedure SetCellValue(Col,Row: integer); public { Public declarations } end; var Form8: TForm8; implementation {$R *.dfm} function TForm8.ColToText(Col: integer): string; var S: string; begin if (Col div 26) > 0 then S := Char(Ord('A') + (Col div 26) - 1) else S := ''; Result := S + Char(Ord('A') + (Col mod 26)); end; procedure TForm8.Button1Click(Sender: TObject); begin dlgOpen.FileName := edFilename.Text; if dlgOpen.Execute then edFilename.Text := dlgOpen.FileName; end; procedure TForm8.Button4Click(Sender: TObject); begin Close; end; procedure TForm8.Button2Click(Sender: TObject); var i: integer; begin XLS.Sheet[0].PrintSettings.FitWidth := 2; XLS.Filename := edFilename.Text; XLS.Read; TabSet.Tabs.Clear; for i := 0 to XLS.Sheets.Count - 1 do TabSet.Tabs.Add(XLS.Sheets[i].Name); TabSet.TabIndex := 0; Grid.Invalidate; end; procedure TForm8.GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var S: string; begin if (ACol > 0) and (ARow > 0) then begin S := XLS.Sheets[TabSet.TabIndex].AsFmtString[ACol - 1,ARow - 1]; if S <> '' then Grid.Canvas.TextRect(Rect,Rect.Left + 2,Rect.Top + 2,S); end else if (ACol <> 0) then begin S := ColToText(ACol - 1); Grid.Canvas.TextRect(Rect,Rect.Left + (Rect.Right - Rect.Left) div 2 - (Grid.Canvas.TextWidth(S) div 2),Rect.Top + 2,S); end else if (ARow <> 0) then Grid.Canvas.TextRect(Rect,Rect.Left + 2,Rect.Top + 2,IntToStr(ARow)); end; procedure TForm8.TabSetChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean); begin Grid.Invalidate; end; procedure TForm8.GridGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); begin EditCol := ACol; EditRow := ARow; case XLS.Sheets[TabSet.TabIndex].CellType[ACol - 1,ARow - 1] of ctNumberFormula, ctStringFormula, ctBooleanFormula: Value := '=' + XLS.Sheets[TabSet.TabIndex].AsFormula[ACol - 1,ARow - 1]; ctInteger,ctFloat: Value := FloatToStr(XLS.Sheets[TabSet.TabIndex].AsFloat[ACol - 1,ARow - 1]); else Value := XLS.Sheets[TabSet.TabIndex].AsWideString[ACol - 1,ARow - 1]; end; end; procedure TForm8.GridSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); begin EditText := Trim(Value); end; procedure TForm8.SetCellValue(Col,Row: integer); begin if Copy(EditText,1,1) = '=' then XLS.Sheets[TabSet.TabIndex].AsFormula[Col,Row] := Copy(EditText,2,MAXINT) else begin try XLS.Sheets[TabSet.TabIndex].AsFloat[Col,Row] := StrToFloat(EditText); except XLS.Sheets[TabSet.TabIndex].AsWideString[Col,Row] := EditText; end; end; end; procedure TForm8.GridSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin lblCell.Caption := ColRowToRefStr(ACol - 1,ARow - 1,False,False); case XLS.Sheets[TabSet.TabIndex].CellType[ACol - 1,ARow - 1] of ctNumberFormula, ctStringFormula, ctBooleanFormula: edCell.Text := '=' + XLS.Sheets[TabSet.TabIndex].AsFormula[ACol - 1,ARow - 1]; else edCell.Text := XLS.Sheets[TabSet.TabIndex].AsWideString[ACol - 1,ARow - 1]; end; if (EditCol = Grid.Col) and (EditRow = Grid.Row) then SetCellValue(Grid.Col - 1,Grid.Row - 1); end; procedure TForm8.GridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if (Key = VK_RETURN) and (EditCol = Grid.Col) and (EditRow = Grid.Row) then SetCellValue(Grid.Col - 1,Grid.Row - 1); end; procedure TForm8.FormCreate(Sender: TObject); begin
Grid.ColWidths[0] := 30;
end; procedure TForm8.Button3Click(Sender: TObject);
begin
XLS.Filename := edFilename.Text;
XLS.Write;
end; end.
Delphi TXLSReadWriteII2 带的demo中直接编辑XLS文件的例子的更多相关文章
- android 内部缓存器(手机自带的存储空间中的当前包文件的路径)
关于Context中: 1. getCacheDir()方法用于获取/data/data/<application package>/cache目录 2. getFilesDir()方法用 ...
- 在 Visual Studio 中打开编辑 cshtml 文件时出现错误:未能完成该操作 无效指针 的解决方法
第一步:关闭 Visual Studio: 第二步:删除 %LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModelCache 下的所有文件: ...
- ibatis.net 中SqlMaps的xml文件的例子
<?xml version="1.0" encoding="utf-8" ?> <!--=========================== ...
- php中使用PHPExcel读写excel(xls)文件的方法
首先从GitHub上下载 excel的相关类库 下载地址:https://github.com/PHPOffice/PHPExcel 以下是从excel中获取数据 <?php /** * * @ ...
- 在Delphi中编辑res文件
先用记事本编写一个rc的文件.如内容为:_Comms RCData Comms.jpg Comms.jpg为图片名称,然后在这个rc文件和图片拷贝到delphi安装路径的bin文件夹里面,选中这两个文 ...
- 如何在网页中浏览和编辑DWG文件 梦想CAD控件
如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2 是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...
- Delphi 自带的 Base64 编解码函数
今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...
- Delphi 自带的字符串分割函数split
下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...
- Delphi 自带了 Base64 编解码的单元
Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码: procedu ...
随机推荐
- 剑指Offer 25. 复杂链表的复制 (链表)
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...
- java中转译符用"\\"的几种特殊字符
在使用split的方法进行分隔时,要对这几种特殊字符进行"\\"分隔 | * ^ : . 1."|" 示例: String[] splitAddress=add ...
- Cronolog切割tomcat日志
Cronolog切割tomcat 安装cronolog 1. 将cronolog-1.6.2.tar.gz 上传至/opt 目录 2. 解压缩 #解压缩 tar -zxvf cronolog-1.6. ...
- centos安装redis步骤
1.官网或wget下载redis-4.0.9.tar.gz: cd /home/tar wget http://download.redis.io/releases/redis-4.0.9.tar.g ...
- PythonStudy——字符串、列表、元组、字典、集合 (str、list、tuple、dict、set)常用方法总结
字符串: # 字符串类型的一些操作(str)st1='hello world 'print(st1[0]) # 根据字符串索引来取字符h 找不到直接崩print(st1[-1]) # 根据索引倒取st ...
- golang: 利用unsafe操作未导出变量
unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁.uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它 ...
- 使用sshpass方式实现ssh自动登录
1:sshpass下载地址(用yum安装不了) https://sourceforge.net/projects/sshpass/files/ or wget http://sourcef ...
- mysql: 查看某库表大小
查询所有数据库占用磁盘空间大小的SQL语句: 语句如下 1 2 3 4 5 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/102 ...
- Python 模块collections
1.深入理解python中的tuple的功能 基本特性 # 可迭代 name_tuple = ('0bug', '1bug', '2bug') for name in name_tuple: prin ...
- eclipse各版本及下载
附:Eclipse各个版本简介(http://zh.wikipedia.org/wiki/Eclipse) eclipse下载地址: https://www.eclipse.org/官网--右上角的I ...