各レコードが日付と値で構成される約 2000 レコードを表示できる Apache POI を使用して Excel を生成したいと考えています。
この Excel を適切に書式設定し、セルの背景に色を付け、適切な数値書式を適用したいと考えています。
これらのタスクは両方とも実行できますが、必要なほど効率的に書式設定を行うことはできません。
フォーマットを適用するために私が試した 3 つの方法は次のとおりです。 3 つの方法はすべて、事前にフォーマットされた Excel テンプレートを使用します。ただし、問題は、Excel でどの程度の書式設定を行い (および書式設定を適用するか)、Java でどの程度行うかです。
方法 1 : Excel 自体で 1 つの行を書式設定し、Java コードを使用して書式設定をコピーします。例えば:
Row existingRow = mySheet.getRow(4);
Cell existingCell = existingRow.getCell(0);
CellStyle currentStyle = existingCell.getCellStyle();
for (int w = 0; w < refData.size(); w++) {
MyValues aa = refData.get(w);
Row r = CellUtil.getRow(w + 4, mySheet);
CellUtil.getCell(r, 0).setCellValue(aa.getMarketDate());
if (w>0) {
CellUtil.getCell(r, 0).setCellStyle(currentStyle);
}
方法 2 : Excel で必要な形式を含むセルを選択し、必要な領域 (2000 行) に貼り付けてから、Apache POI を使用してデータを入力するだけです
方法 3 : Excel を使用して列に書式を適用し、Apache POI を使用してデータを入力するだけです。
3 番目の方法は、(a) Excel で事前に書式設定するだけで Java コードのプログラミングを開始する必要がないため、私にとってははるかに望ましい方法です [実際の問題には、1 列だけでなく、数十列が含まれることに注意してください]。 (b) 列に書式を適用すると、ワークブックが使用するメモリの点で非常に有利です。
唯一の問題は、フォーマットがコピー アンド ペーストされたセルに Apache POI が書き込むと、正常に表示されることです。書式が列に適用されているセルに書き込むと、貼り付ける前に書式が削除されます。
これを回避する方法はありますか?Apache POI は各行を個別に考慮して機能するため、そうではないと思います。たとえば、列にフォーマットを適用するには、列の各セルに個別にフォーマットを適用する必要があります