Excel セルの表示形式(Number Format)は、スプレッドシートを扱う際に重要なステップです。特に、プロフェッショナルな場面やデータドリブンな環境では、適切な表示形式を設定することで、データを明確かつ一貫性のある形で提示でき、用途に応じた適切な形式で表示することが可能になります(例:財務データ、パーセンテージ、日付、科学的値など)。Java を使用して Excel のタスクを自動化する場合、適切な表示形式をプログラムで設定することで、時間を節約し、エラーを減らし、レポートやダッシュボードの可読性を向上させることができます。
本記事では、Spire.XLS for Java を使用して、Excel セルの表示形式を設定する方法を説明します。これにより、洗練された構造化スプレッドシートを簡単に作成することが可能になります。
Spire.XLS for Java をインストールします
まず、Spire.XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>14.12.0</version>
</dependency>
</dependencies>
Java で Excel の表示形式を設定する
Spire.XLS for Java は、CellRange.setNumberFormat() メソッドを提供しており、Excel の表示形式コードを使用してセルの表示形式を設定できます。以下の表は、Excel の表示形式コードでよく使用される記号とその機能を説明しています。
記号 | 説明 |
0 と # | 0は桁数を強制的に表示(必要に応じてゼロ埋め)、#は必要な場合にのみ桁を表示します。 |
? | 数字の位置を揃えるためのプレースホルダー。使用されない場合はスペースを確保しますが表示しません。 |
, と . | ,は千単位の区切り文字として使用され、1000での除算も示します。.は小数点を表します。 |
% | 数値を100倍し、パーセント記号を追加します。 |
E+ / E- | 科学的記数法で、正および負の指数を表します。 |
通貨($, €, ¥など) | 対応する通貨記号を表示します。 |
[Color] | テキストの色を設定(例:[Red], [Blue])。 |
@ | テキストプレースホルダー。カスタムフォーマットでテキストを表現するために使用されます。 |
日付/時刻(yyyy, mmmm, mm, dd, hh, ss, AM/PM) | 年、月名、月、日、時間、分、秒、12時間制のAM/PMを表します。 |
Java で Excel セルの表示形式を設定する手順は以下の通りです:
- Workbook オブジェクトを作成して、新しい Excel ワークブックを作成します。
- Workbook.getWorksheets().get() メソッドを使用して、最初のデフォルトワークシートを取得します。
- CellRange.setValue() メソッドで値を追加するか、CellRange.setNumberValue() メソッドで数値を追加します。
- CellRange.setNumberFormat() メソッドで表示形式を設定します。
- Workbook.saveToFile() メソッドでワークブックを保存します。
- Java
import com.spire.xls.*;
public class SetNumberFormat {
public static void main(String[] args) {
// 新しいワークブックインスタンスを作成
Workbook workbook = new Workbook();
// 最初のワークシートを取得
Worksheet sheet = workbook.getWorksheets().get(0);
// タイトルを追加
sheet.getCellRange("B1").setText("数値表示形式");
sheet.getCellRange("B1").getCellStyle().getExcelFont().isBold(true);
sheet.getCellRange("B1").getCellStyle().getExcelFont().setFontName("Yu Gothic UI");
sheet.getCellRange("B1:C1").merge();
sheet.getCellRange("B1:C1").setHorizontalAlignment(HorizontalAlignType.Center);
// 数値フォーマットの例と対応する値を追加
// 正の数値フォーマットを追加
addNumberFormatExample(sheet, "B3", "C3", "0", "1234.5678");
addNumberFormatExample(sheet, "B4", "C4", "0.00", "1234.5678");
addNumberFormatExample(sheet, "B5", "C5", "#,##0.00", "1234.5678");
addNumberFormatExample(sheet, "B6", "C6", "$#,##0.00", "1234.5678");
// 負の数値フォーマットを追加
addNumberFormatExample(sheet, "B7", "C7", "0;[Red]-0", "-1234.5678");
addNumberFormatExample(sheet, "B8", "C8", "0.00;[Red]-0.00", "-1234.5678");
// 科学表記とパーセンテージフォーマットを追加
addNumberFormatExample(sheet, "B9", "C9", "0.00E+00", "1234.5678");
addNumberFormatExample(sheet, "B10", "C10", "0.00%", "0.5678");
// 日付と時刻フォーマットを追加
addNumberFormatExample(sheet, "B11", "C11", "yyyy-MM-dd", "44930.0"); // 2023-01-01のExcel日付値
addNumberFormatExample(sheet, "B12", "C12", "HH:mm:ss", "0.75"); // 18:00:00のExcel時刻値
// テキストフォーマットを追加
addNumberFormatExample(sheet, "B13", "C13", "@", "テキスト例");
// フォーマットを設定
sheet.getCellRange("B3:B13").getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
sheet.getCellRange("C3:C13").getCellStyle().setKnownColor(ExcelColors.Gray50Percent);
sheet.setColumnWidth(2, 24);
sheet.setColumnWidth(3, 24);
// ワークブックをファイルに保存
workbook.saveToFile("output/Excelの数字書式を設定.xlsx", FileFormat.Version2016);
workbook.dispose();
}
/**
* 指定されたワークシートのセルに数値フォーマットの例を追加します。
*
* @param sheet 修正するワークシート。
* @param textCell 数値フォーマット文字列を表示するセル。
* @param valueCell フォーマットされた値を表示するセル。
* @param format 数値フォーマットコード。
* @param value フォーマットする数値値。
*/
private static void addNumberFormatExample(Worksheet sheet, String textCell, String valueCell, String format, String value) {
sheet.getCellRange(textCell).setText(format); // 数値フォーマットコードを表示
sheet.getCellRange(valueCell).setValue(value); // 値を追加
// sheet.getCellRange(valueCell).setNumberValue(Double); // またはsetNumberValue()メソッドで数値を設定
sheet.getCellRange(valueCell).setNumberFormat(format); // 数値フォーマットを適用
}
}
Java で指定した書式の値を Excel セルに追加する
Spire.XLS for Java では、CellRange クラスのメソッドを使用して、特定の数値書式でデータを直接 Excel セルに追加することも可能です。以下の表は、セルにデータを追加するための主なメソッドと、対応するデータ型を説明しています。
メソッド | 説明 |
setText(String text) | セルまたはセル範囲にテキスト値を設定します。 |
setNumberValue(double numberValue) | セルまたはセル範囲に数値を設定します。 |
setBooleanValue(boolean booleanValue) | セルまたはセル範囲にブール値(true/false)を設定します。 |
setDateTimeValue(java.util.Date dateTime) | セルまたはセル範囲に日時値を設定します。 |
setHtmlString(String htmlCode) | セルまたはセル範囲にHTML形式の文字列を設定します。 |
Excel のセルに特定の数値形式でデータを追加する詳細な手順は次のとおりです:
- Workbook クラスのインスタンスを作成します。
- Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
- Worksheet.getCellRange() メソッドを使用して、セルまたはセル範囲を取得します。
- CellRange クラスのメソッドを使用して、特定の表示形式の値を追加します。
- 必要に応じてセルのスタイルを設定します。
- Workbook.saveToFile() メソッドでワークブックを保存します。
- Java
import com.spire.xls.*;
import java.util.Calendar;
import java.util.Date;
public class AddFormattedDataExcel {
public static void main(String[] args) {
// 新しいワークブックインスタンスを作成
Workbook workbook = new Workbook();
// 最初のワークシートを取得
Worksheet sheet = workbook.getWorksheets().get(0);
// テキスト値を追加
sheet.getCellRange("C3").setText("サンプルテキスト");
// 数値を追加
sheet.getCellRange("C4").setNumberValue(1234.5678);
// ブール値を追加
sheet.getCellRange("C5").setBooleanValue(true);
// 日付と時刻の値を追加
sheet.getCellRange("C6").setDateTimeValue(new Date(2024, Calendar.DECEMBER, 12));
// HTML文字列を追加
sheet.getCellRange("C7").setHtmlString("太字のテキスト");
// セルをフォーマット
sheet.getCellRange("C3:C7").setHorizontalAlignment(HorizontalAlignType.Center);
sheet.getCellRange("C3:C7").setVerticalAlignment(VerticalAlignType.Center);
sheet.getCellRange("C3:C7").getCellStyle().getExcelFont().setFontName("Yu Gothic UI");
sheet.getCellRange("C3:C7").getCellStyle().getExcelFont().setSize(14);
for (int i = 3; i <= 7; i++) {
sheet.autoFitColumn(i);
}
// ワークブックを保存
workbook.saveToFile("output/Excelに書式付き値を追加.xlsx", FileFormat.Version2016);
workbook.dispose();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。