Incorrect Excel File, correct PDF and other file formats - Work around.
Hello People,
I did some debuging by myselft and on the TxAll.pas file
Search for the expression "AutoConvertToNumber" it will occour just one on
the entire file.
I did the following changes around line 3217.
if (Txt.DataType in [rdtInteger, rdtFloat]) or (not Txt.IsMemo and
IsNumber(Txt.Text, FOptions.FormatChars) and FOptions.AutoConvertToNumber)
then
begin
if Trim(Txt.Text) <> '' then
begin
Comment Line // Stream(AnsiChar(3) + AnsiChar(2) + LotWord(14) +
LotWord(FRow) + LotWord(FCol) + XFIndex(Txt, True) + TextToIEEE(Txt.Text));
Add Line Text := Txt.Text;
Add Line Stream(AnsiChar(4) + AnsiChar(2) +
LotWord(Length(Text) + 8) + LotWord(FRow) + LotWord(FCol) + XFIndex(Txt,
False) + LotWord(Length(Text)) + Text);
end;
I can get my excel files ok now.
I hope It can help the communit .
Abel F. de Angelis
abel@afa.inf.br
I did some debuging by myselft and on the TxAll.pas file
Search for the expression "AutoConvertToNumber" it will occour just one on
the entire file.
I did the following changes around line 3217.
if (Txt.DataType in [rdtInteger, rdtFloat]) or (not Txt.IsMemo and
IsNumber(Txt.Text, FOptions.FormatChars) and FOptions.AutoConvertToNumber)
then
begin
if Trim(Txt.Text) <> '' then
begin
Comment Line // Stream(AnsiChar(3) + AnsiChar(2) + LotWord(14) +
LotWord(FRow) + LotWord(FCol) + XFIndex(Txt, True) + TextToIEEE(Txt.Text));
Add Line Text := Txt.Text;
Add Line Stream(AnsiChar(4) + AnsiChar(2) +
LotWord(Length(Text) + 8) + LotWord(FRow) + LotWord(FCol) + XFIndex(Txt,
False) + LotWord(Length(Text)) + Text);
end;
I can get my excel files ok now.
I hope It can help the communit .
Abel F. de Angelis
abel@afa.inf.br
This discussion has been closed.
Comments
we have been having all the same issues,
while solution below is great for data accuracy, however it converts numbers
into text;
in Excel user will have to convert them to numbers.
I think I found a bug in that same unit TxAll.pas
in the function below I changed Char to AnsiChar
and it works for us.
thought I share:
function FloatToIEEE(Value: Double): String;
var
T: IEEES;
I: Integer;
begin
T := IEEES(Value);
Result := '';
for I := 1 to 8 do begin
Result := Result + AnsiChar(T[I]);
end;
end;
Regards,
Alina