You've already forked lazarus-ccr
FPSpreadsheet: Improves the formula example, finishes basic implementation of RPN formula support in BIFF8
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1662 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -30,20 +30,42 @@ begin
|
||||
MyWorksheet.WriteUTF8Text(0, 1, 'Text Formula');// B1
|
||||
MyWorksheet.WriteUTF8Text(0, 2, 'RPN');// C1
|
||||
|
||||
MyWorksheet.WriteUTF8Text(1, 0, '=Sum(D2:d5)'); // A2
|
||||
|
||||
MyFormula.FormulaStr := '=Sum(D2:d5)';
|
||||
// =Sum(E2:e5)
|
||||
MyWorksheet.WriteUTF8Text(1, 0, '=Sum(E2:e5)'); // A2
|
||||
//
|
||||
MyFormula.FormulaStr := '=Sum(DE:e5)';
|
||||
MyFormula.DoubleValue := 0.0;
|
||||
MyWorksheet.WriteFormula(1, 1, MyFormula); // B2
|
||||
|
||||
//
|
||||
SetLength(MyRPNFormula, 2);
|
||||
MyRPNFormula[0].ElementKind := fekCellRange;
|
||||
MyRPNFormula[0].Row := 1;
|
||||
MyRPNFormula[0].Row2 := 4;
|
||||
MyRPNFormula[0].Col := 3;
|
||||
MyRPNFormula[0].Col2 := 3;
|
||||
MyRPNFormula[0].Col := 4;
|
||||
MyRPNFormula[0].Col2 := 4;
|
||||
MyRPNFormula[1].ElementKind := fekOpSUM;
|
||||
MyWorksheet.WriteRPNFormula(1, 2, MyRPNFormula); // C2
|
||||
|
||||
// Write the formula =ABS(E1)
|
||||
MyWorksheet.WriteUTF8Text(2, 0, '=ABS(E1)'); // A3
|
||||
//
|
||||
SetLength(MyRPNFormula, 2);
|
||||
MyRPNFormula[0].ElementKind := fekCell;
|
||||
MyRPNFormula[0].Col := 4;
|
||||
MyRPNFormula[0].Row := 0;
|
||||
MyRPNFormula[1].ElementKind := fekABS;
|
||||
MyWorksheet.WriteRPNFormula(2, 2, MyRPNFormula);
|
||||
|
||||
// Write the formula =4+5
|
||||
MyWorksheet.WriteUTF8Text(3, 0, '=4+5'); // A4
|
||||
//
|
||||
SetLength(MyRPNFormula, 3);
|
||||
MyRPNFormula[0].ElementKind := fekNum;
|
||||
MyRPNFormula[0].DoubleValue := 4.0;
|
||||
MyRPNFormula[1].ElementKind := fekNum;
|
||||
MyRPNFormula[1].DoubleValue := 5.0;
|
||||
MyRPNFormula[2].ElementKind := fekAdd;
|
||||
MyWorksheet.WriteRPNFormula(3, 2, MyRPNFormula);
|
||||
end;
|
||||
|
||||
procedure WriteSecondWorksheet();
|
||||
|
@ -861,7 +861,12 @@ begin
|
||||
{ Additional data }
|
||||
case TokenID of
|
||||
{ Operand Tokens }
|
||||
//fekCell: Result := INT_EXCEL_TOKEN_TREFR;
|
||||
INT_EXCEL_TOKEN_TREFR, INT_EXCEL_TOKEN_TREFV, INT_EXCEL_TOKEN_TREFA: { fekCell }
|
||||
begin
|
||||
AStream.WriteWord(AFormula[i].Row and MASK_EXCEL_ROW);
|
||||
AStream.WriteByte(AFormula[i].Col);
|
||||
Inc(RPNLength, 3);
|
||||
end;
|
||||
|
||||
INT_EXCEL_TOKEN_TAREA_R: { fekCellRange }
|
||||
begin
|
||||
@ -890,13 +895,6 @@ begin
|
||||
INT_EXCEL_TOKEN_TADD, INT_EXCEL_TOKEN_TSUB, INT_EXCEL_TOKEN_TMUL,
|
||||
INT_EXCEL_TOKEN_TDIV, INT_EXCEL_TOKEN_TPOWER: begin end;
|
||||
|
||||
INT_EXCEL_TOKEN_TREFR, INT_EXCEL_TOKEN_TREFV, INT_EXCEL_TOKEN_TREFA:
|
||||
begin
|
||||
AStream.WriteWord(AFormula[i].Row and MASK_EXCEL_ROW);
|
||||
AStream.WriteByte(AFormula[i].Col);
|
||||
Inc(RPNLength, 3);
|
||||
end;
|
||||
|
||||
{ Other operations }
|
||||
INT_EXCEL_TOKEN_TATTR: { fekOpSUM }
|
||||
begin
|
||||
|
Reference in New Issue
Block a user