1

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

これは正常に機能しますが、列の集計を定義する方法がわかりません。

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

問題は、挿入される行数が事前にわからないことです。そのため、10 行を空のままにし、A11 を集計フィールドとして定義するオプションはありません。100 行のデータになる可能性があるためです。データの最後の行のすぐ下に要約が必要です。

何か案は?

4

1 に答える 1

1

OpenTBSは、シートがマージされるときにセルを追跡できません。これは、マージ中にいつでもセルを移動、削除、および複製できるためです。

それでも、2つの解決策を提案できます。

簡単な解決策:

合計をゾーンの上に配置することを決定します。そして、その上のゾーンをカバーする式を使用してください。

ODSファイルの例(OpenOfficeスプレッドシート):
Excelの場合、「odsNum」を「xlsxNum」に置き換え、「table:table-row」を「row」に置き換えます。

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

このようにして、ODS式は、ブロック「a」を拡張できるものに関係なく正しいままになります。

手の込んだ解決策:

すぐ上のセルを参照する数式を使用します。

ODSファイルの例(OpenOfficeスプレッドシート):
Excelの場合、「odsNum」を「xlsxNum」に置き換え、「table:table-row」を「row」に置き換えます。

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))) )
于 2012-02-03T22:34:51.647 に答える