2012-02-03 8 views
1

私は、既存のExcel(またはOpenOffice Calc)スプレッドシートとデータベースのデータをマージするために、OpenTBSプラグインでPHPライブラリTinyButStrongを使用しています。PHP:OpenTBSでのスプレッドシートの要約?

これは問題なく動作しますが、列のサマリーを定義する方法を理解できません。

たとえば、セルA1をデータとマージするセルとして定義します。マージ後、A2、A3などの行が挿入されます。

問題は、あらかじめいくつの行が挿入されるかわからないことです。したがって、10行を空のままにしておくことはできませんA11を要約フィールドとして使用することもできます。なぜなら、100行のデータになる可能性があり、データの最後の行のすぐ下に要約が必要なためです。

アイデア?

答えて

1

OpenTBSは、マージ中に任意のセルを移動、削除、複製することができるため、シートがマージされるとセルをたどることができません。

しかし、私は2つの解決法を提案できます。

簡単な解決策:

は合計にゾーン上記の合計を配置することを決定しました。それ以上のゾーンをカバーする数式を使用することはできません。

ODSファイル(OpenOfficeのスプレッドシート)と例: "行" と "テーブル列テーブル" Excel用
は、 "xlsxNum" と "odsNum" とを置き換えます。

A1: = SUM(A2:A20000) 
A2: [a.amount;block=table:table-row;ope=odsNum] 

ODS式は「」に拡張することができ、これまで正しいものをブロックままこの方法です。

精巧なソリューション:

それだけで、それ自体上のセルへの参照式を使用してください。

ODSファイル(OpenOfficeのスプレッドシート)と例: "行" と "テーブル列テーブル" Excel用
は、 "xlsxNum" と "odsNum" とを置き換えます。

A1: [a.amount;block=table:table-row;ope=odsNum] 
A2: =SUM(A1 : INDIRECT(ADDRESS(ROW()-1;COLUMN()))) 

同じであるが、固定列と:

A1: [a.amount;block=table:table-row;ope=odsNum] 
A2: =SUM(A1 : INDIRECT("A" & (LIGNE()-1)))) 
関連する問題