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 ...
随机推荐
- 弹性布局(Flex布局)整理
一. 弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...
- ngnix 500错误原因分析
参考http://www.cnblogs.com/huqiang/p/5333975.html
- Python全栈之路----文件处理
文件操作分为读.写.修改,我们先从读开始 f = open(file = 'D:/工作日常/ABCD.txt',mode = 'r',encoding = 'utf-8') #file 是文件路径 m ...
- 初见 fultter for MAC
第一步:下载flutter https://flutter.io/docs/development/tools/sdk/archive?tab=macos#macos 第二步:(development ...
- QT4.8.6-VS2010开发环境配置
目录 1.下载软件 2.环境配置 3.VAssistX配置 1.下载软件 VS2010下载地址:链接: https://pan.baidu.com/s/1gvPjZWBtSEwW37H1xf2vbA ...
- terraform 配置github module source
terraform 支持多种module 的source 配置 以下是一个简单的使用github source的demo 测试项目 项目结构 ├── init.tpl ├── main.tf 代码 ...
- Django学习笔记之数据库-数据库与模型
MySQL数据库 在网站开发中,数据库是网站的重要组成部分.只有提供数据库,数据才能够动态的展示,而不是在网页中显示一个静态的页面.数据库有很多,比如有SQL Server.Oracle.Postgr ...
- 3.2 MathType插入竖省略号
法1:鼠标单击位于上方菜单栏下面的空格和椭圆模版,然后在下拉模版下选择垂直省略号,如下图所示. 按照上面的操作选择垂直省略号模版后,这样在下面的编辑区域就会打出该符号了. 法2:在插入符号下查找 如果 ...
- Python 语言之 map/reduce
1.相关文献 大名鼎鼎的Google论文<MapReduce: Simplified Data Processing on Large Clusters> 对应的中文翻译<MapRe ...
- 5.IAP - FLASH
一.Flash与时钟系统的关系 STM32系统时钟: HSE 高速外部时钟,电路上焊接的外部时钟,一般是4Mhz-16Mhz,板子上的是8Mhz ...