关于F1BOOK中单元格的取值问题!(50分)

  • 主题发起人 主题发起人 xiaoxinxiaoxin
  • 开始时间 开始时间
X

xiaoxinxiaoxin

Unregistered / Unconfirmed
GUEST, unregistred user!
在F1BOOK中,在一个单元格中输入“1101011234567890”的字符串,但是取出来却是:
“1.1010123456789E+015”,F1BOOK自动把这个字符串转换成科学计数来显示,我怎样才能
不让F1BOOK自动转换呢?或者说怎样才能设置单元格的属性为文本类型,而不是数值型?
 
我试过用F1Book1.FormatFraction;这个过程,但是这个过程只是把单元格的显示转换过来,
也就是如果调用了这个过程,显示就变成“1101011234567890”,但是取出来的还是
“1.1010123456789E+015”。有什么方法可以取出“1101011234567890”吗?
 
我还试过先定义一个变量:
var CellFMT:F1CellFormat;
然后
CellFMT:=F1Book1.CreateNewCellFormat;
Cellfmt.NumberFormat[1]:='text';
F1Book1.SetCellFormat(CellFmt)

但是这样也不行。

 
你在F1BOOK控件上点右键,选择workbook deginer ,然后选择Format,选择一下你要的
格式,试一下。
 
可以
1. 在workbook designer中,选择number format 为 0;
2. 取出来的时候再做转换,edit1.text := floattostr(f1book1.numberRC[1,1]);
 
在输入时在“1101011234567890”前先输入一个“'”即为字符串方式,读出来的就是你要的字符串
 
你可以改变那一列的单元格的显示属性,就像excel那样
 
jackyzhang说的是对的,你应该在字符型的单元格前面使用字符'
这个原则对于非数字型的字符串依然适用
 
能讲一下F1BOOK的具体用法码?
 
To xiaoxinxiaoxin:
设定为文本类型可以用以下的方法。
var CellFMT:F1CellFormat;
begin
CellFMT:=F1Book1.CreateNewCellFormat;
CellFmt.NumberFormat[1]:='@';
F1Book1.SetCellFormat(CellFmt)

end;
这样就可以了,随便你输入什么都是文本类型的

 
///////////////////////////////////////////////////////
//ÒÔÏÂΪÉèÖñí¸ñÖÐÊýÖµ¸ñʽ
//////////////////////////////////////////////////////

procedure TForm1.ToolButton32Click(Sender: TObject);
var
s:string;
cellformat:f1cellformat;
begin
cellformat:=fbook1.getcellformat;
s:=cellformat.NumberFormat[fbook1.handle];
if pos('.',s)<>0 then cellformat.NumberFormat[fbook1.handle]:=s+'0'
else
cellformat.NumberFormat[fbook1.handle]:='#.0';
fbook1.SetCellFormat(cellformat);
end;

procedure TForm1.ToolButton33Click(Sender: TObject)
//&amp;frac14;&amp;Oacute;&amp;ETH;&amp;iexcl;&amp;Ecirc;&amp;yacute;&amp;micro;&amp;atilde;
var
i:integer;
s,s2,s3,s4:string;
cellformat:f1cellformat;
begin
cellformat:=fbook1.getcellformat;
s:=cellformat.NumberFormat[fbook1.handle];
i:=length(s);
s2:=copy(s,1,pos('.',s)-1);
s3:=copy(s,pos('.',s),i-pos('.',s));
if s3<>'.' then
s4:=s2+s3
else
s4:=s2;
cellformat.NumberFormat[fbook1.handle]:=s4;
fbook1.SetCellFormat(cellformat);
end;

procedure TForm1.ToolButton38Click(Sender: TObject);
var
r1,c1,r2,c2:integer;
begin
fbook1.getselection(0,r1,c1,r2,c2);
fbook1.ObjCreate(5,r1,c1,r2,c2);
fbook1.ObjBringToFront
end;
procedure TForm1.ToolButton39Click(Sender: TObject);
var
cellformat:f1cellformat;
s,s1:string;
i,j,r1,r2,c1,c2:integer;
cellvalue:double;
begin
s1:='#,###.';
fbook1.GetSelection(0,r1,c1,r2,c2);
cellvalue:=fbook1.numberrc[r1,c1];
cellformat:=fbook1.GetCellFormat;
s:=cellformat.NumberFormat[fbook1.handle];
if pos(',',s)<>0 then
begin
if pos('.',s)<>0 then cellformat.NumberFormat[fbook1.handle]:='###'+copy(s,pos('.',s),length(s)-pos('.',s)+1)
else
cellformat.NumberFormat[fbook1.handle]:='###';
end
else
begin
if s='General'then
begin
if pos('.',floattostr(cellvalue))=0 then cellformat.NumberFormat[fbook1.handle]:='#,###'
else
begin
i:=length(floattostr(cellvalue));
for j:=1 to i-pos('.',floattostr(cellvalue)) do
begin
s1:=s1+'0';
end;
cellformat.NumberFormat[fbook1.handle]:=s1;
end;
end
else
cellformat.NumberFormat[fbook1.handle]:='#,###'+copy(s,pos('.',s),length(s)-pos('.',s)+1);
end;
fbook1.SetCellFormat(cellformat);
end;
////////////////////////////////////////////////////////////////
//&amp;Ograve;&amp;Ocirc;&amp;Eacute;&amp;Iuml;&amp;Icirc;&amp;ordf;±í&amp;cedil;&amp;ntilde;&amp;Ouml;&amp;ETH;&amp;micro;&amp;Auml;&amp;Ecirc;&amp;yacute;&amp;Ouml;&amp;micro;&amp;cedil;&amp;ntilde;&amp;Ecirc;&amp;frac12;&amp;micro;&amp;Auml;&amp;Eacute;è&amp;Ouml;&amp;Atilde;
/////////////////////////////////////////////////////////////////
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
890
SUNSTONE的Delphi笔记
S
D
回复
0
查看
814
DelphiTeacher的专栏
D
D
回复
0
查看
818
DelphiTeacher的专栏
D
后退
顶部