DELPHI调用EXCEL中的数字RANGE合并问题:(100分)

  • 主题发起人 主题发起人 etack
  • 开始时间 开始时间
E

etack

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI调用EXCEL中的数字RANGE合并问题:
在DELPHI中处理EXCEL的RANGE合并问题,一般的格式为:
WorkBooks[1].WorkSheets[1].Range['B10:D10'].Merge; //合并第10行的B到D
或者
WorkBooks[1].WorkSheets[1].Range['B10:B11'].Merge; //合并第B列的10行和11行
注意:Range后面的方括号中是字符串参数
现在有了一个问题:
在DELPHI得到一组数据,用来表示输入到EXCEL中数据的位置是用数字表示的。假设是
这样一组:(2,3)//表示输出到EXCEL中的第二行第三列
(2,4)
(2,5)
于是问题产生了: 当我需要合并这三个单元格时,一般,如果我已经确切知道这个位
置,应该这样合并:
WorkBooks[1].WorkSheets[1].Range['C2:C4'].Merge;
这样的合并肯定是不存在问题的,已经有N多大虾验证过了,我也实践过了。但是,我
得到的数据他们的位置并不是固定的,而且数据的多少是有用户在程序在程序中选择决
定的,他们的位置由多个原因来决定,我只能用象上面的数组来表示他们的位置,而我
在合并的时候,如果位置为(A,B)(C,D),并不能这样实现合并:
WorkBooks[1].WorkSheets[1].Range['A,B:C,D'].Merge;
也不能这样实现
WorkBooks[1].WorkSheets[1].Range['AB:CD'].Merge;(因为如果数字为(2,12)的
话,写成AB格式就不知道到底是(2,12)呢还是(21,2))
而且,列相同或者行相同的时候不能只写行或者列,这样会实现成整个的行或者列的合
并。
到底要怎么样才能实现用数字表示的一个RANGE在DELPHI中的合并,希望各位大虾多多关
注,多多指教!
 
好方法没有
笨方法倒有一个:
用函数实现从数字到字母的转换:
function
var
I, J : Integer;
S1, S2 : String;
begin
if Num <= 0 then
showmessage('Can not change a negative!')
else
if Num < 27 then
begin
Result := Chr(Ord(65+Num-1));
end else
begin
I := Num div 26;
J := Num mod 26;
S1 := Chr(Ord( 65 + I - 1 ));
S2 := Chr(Ord( 65 + J - 1 ));
Result := S1 + S2 ;
end;
end;
 
以上方法不失为一个好办法!
 
bocai80:
谢谢你的方法,但如果我不想用函数转换,有没有更直接点的方法,就是用数字来
实现?
 
bocai80 :
赶时间, 不能再研究什么别的方法了
看来大家好象对这个都不是很热情啊
只好先用你的方法了 谢谢了[:)][:)]
分分咯![8D]
 
后退
顶部