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 ...
随机推荐
- Atom+latex+中文环境
最近在写论文,的路上.很多idea都受限于官方给的模板不能够添加自己即时的中文idea,所以添加中文到文献中很有必要,这里记录自己添加中文的几个小步骤 1. 受限将atom中的latex packag ...
- 自定义textview
#import <UIKit/UIKit.h> @class FSTextView; typedef void(^FSTextViewHandler)(FSTextView *textVi ...
- SQLI DUMB SERIES-12
(1)检测闭合方式:在username上输入" admin" " 说明输入的username后还有双引号和括号 方法一: (2)通过其他途径知道用户名即可.如 输入&qu ...
- python:递归函数(汉诺塔)
#hanoi.py def hanoi(n,x,y,z): if n==1: print(x,"-->",z) else: hanoi(n-1,x,z,y) print(x, ...
- PythonStudy——流程控制 Process control
1. 分支结构 -- if -- if...else...-- if...elif...else...-- if嵌套 ''' if 条件: 同缩进的代码块 ''' if age > 18: pr ...
- Nginx自动安装脚本
添加一个install_nginx.sh脚本 版本一:(以下脚本为在线自动化安装) #!/bin/bash mkdir /soft cd /soft wget -c http://nginx.org/ ...
- Linux内核分析第六次作业
分析system_call中断处理过程 一.先在实验楼的虚拟机中MenuOs增加utsname和utsname-asm指令. 具体实现如下: 1.克隆最新新版本的menu,之后进入menu 2.进入t ...
- SpringBoot事务注解@Transactional
SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作. 1. 事务说明 在Spring中,事务有两种实现方式,分别是编程式事务管理 ...
- bootstrap模态框弹框后执行Ajax
如下: editModal:模态框ID <script> $(document).ready(function() { $('#editModal').on('hidden.bs.moda ...
- xterm下字体设置
code ~/.Xdefaults xterm*locale: true xterm.utf8: true xterm*utf8Title: true ! 滚动条 !XTerm*scrollBar: ...