セル値の型と表示書式 — 文字列・数値・日付・時刻・真偽値

level: basic / verified: 2026-10-01 / 4言語タブ対応 / English

やりたいこと

セルに入れる値の型(文字列 / 数値 / 日付 / 時刻 / 真偽値)ごとに正しい setter を使い、 表示書式を指定し、getValue() と getValue(true) の違いを押さえる。

型の早見表

入れたい値メソッド例
文字列setValue(str)setValue("りんご")
数値setNumberValue(num)setNumberValue(1234.5)
日付・時刻setDateValue(dateTimeObject)setDateValue(d)
日付・時刻(文字列から)setDateStringValue(str)setDateStringValue("2024-01-15")
真偽値setBooleanValue(bool)setBooleanValue(true)
型を自動判定させたいsetValue(str)setValue("2024/1/15") → 日付になる
数式setFormula(str)setFormula("SUM(A1:A3)")

すべての setter は共通の第2・第3引数 (forceString?, numberFormat?) を持ちます (setDateStringValue / setValue も同様)。

コード

実行結果:

// value-types.js — 型ごとの setter と表示書式、生値と表示値の違い
const { nodeosbxl, dto } = require("nodeosbxl");

const app = new nodeosbxl.App();
const wb = app.createWorkBook("value-types.xlsx");
const ws = wb.openWorkSheet("Sheet1");

const show = (a1) => {
    const r = ws.getRange(`${a1}:${a1}`);
    console.log(`  ${a1}: 表示値=${JSON.stringify(r.getValue()[a1])}` +
                ` 生値=${JSON.stringify(r.getValue(true)[a1])}` +
                ` 書式=${JSON.stringify(r.getNumberFormat()[a1])}`);
};

// --- 日付・時刻 ---
// DateTimeObject は引数なしで生成し、setYMD() / setHMS() で中身を設定します
const date = new dto.DateTimeObject();
date.setYMD(2024, 1, 15);

const datetime = new dto.DateTimeObject();
datetime.setYMD(2024, 1, 15);
datetime.setHMS(13, 45, 30);

const time = new dto.DateTimeObject();
time.setHMS(9, 5, 0);

console.log("[日付・時刻]");
ws.getRange("A1:A1").setDateValue(date);                      // 日付のみ
ws.getRange("A2:A2").setDateValue(datetime);                  // 日付 + 時刻
ws.getRange("A3:A3").setDateValue(time);                      // 時刻のみ
ws.getRange("A4:A4").setDateStringValue("2024-01-15");        // 文字列から
ws.getRange("A5:A5").setDateStringValue("令和6年1月15日");      // 和暦も認識されます
ws.getRange("A6:A6").setDateValue(date, false, "yyyy-mm-dd");  // 表示書式を同時に指定
ws.getRange("A7:A7").setDateValue(date, false, "ggge年m月d日"); // 和暦+引用符なし日本語も使えます
["A1", "A2", "A3", "A4", "A5", "A6", "A7"].forEach(show);

// --- 数値・文字列 ---
console.log("[数値・文字列]");
ws.getRange("B1:B1").setNumberValue(1234567.891);
ws.getRange("B2:B2").setNumberValue(1234567.891, false, "#,##0.00");
ws.getRange("B3:B3").setNumberValue(0.25, false, "0.0%");
ws.getRange("B4:B4").setValue("00123");      // 先頭 0 は文字列として保持される
ws.getRange("B5:B5").setValue("2024/1/15");  // 汎用 setter は日付として自動認識
ws.getRange("B6:B6").setValue("12345", true); // forceString=true で強制的に文字列扱い
ws.getRange("B7:B7").setNumberValue(1234.5, false, '"円"#,##0');   // 引用符リテラル
ws.getRange("B8:B8").setNumberValue(-1234.5, false, "#,##0;赤-#,##0"); // 裸の色トークン → [Red]
["B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"].forEach(show);

// --- 真偽値 ---
console.log("[真偽値]");
ws.getRange("C1:C1").setBooleanValue(true);
ws.getRange("C2:C2").setBooleanValue(false);
ws.getRange("C3:C3").setFormula("TRUE");     // 数式でも真偽値になる
["C1", "C2", "C3"].forEach(show);

// --- 日付のシリアル値 ---
console.log("[シリアル値]");
console.log("  2024/1/15 のシリアル値 =", app.getNumericValue(date));
console.log("  1904 年形式の場合      =", app.getNumericValue(date, true));
console.log("  wb.isDate1904()        =", wb.isDate1904());

wb.save();
wb.close();
[日付・時刻]
  A1: 表示値="2024/1/15" 生値="45306" 書式="yyyy/m/d;@"
  A2: 表示値="2024/1/15 13:45:30" 生値="45306.573263888888" 書式="yyyy/m/d h:mm:ss;@"
  A3: 表示値="9:05:00" 生値="0.37847222222222221" 書式="h:mm:ss;@"
  A4: 表示値="2024/1/15" 生値="45306" 書式="yyyy/m/d;@"
  A5: 表示値="2024/1/15" 生値="45306" 書式="yyyy/m/d;@"
  A6: 表示値="2024-01-15" 生値="45306" 書式="yyyy-mm-dd"
  A7: 表示値="令和6年1月15日" 生値="45306" 書式="ggge年m月d日"
[数値・文字列]
  B1: 表示値="1234567.891" 生値="1234567.8910000001" 書式="General"
  B2: 表示値="1,234,567.89" 生値="1234567.8910000001" 書式="#,##0.00"
  B3: 表示値="25.0%" 生値="0.25" 書式="0.0%"
  B4: 表示値="00123" 生値="00123" 書式="General"
  B5: 表示値="2024/01/15" 生値="45306" 書式="yyyy/mm/dd"
  B6: 表示値="12345" 生値="12345" 書式="General"
  B7: 表示値="円1,235" 生値="1234.5" 書式="\"円\"#,##0"
  B8: 表示値="-1,235" 生値="-1234.5" 書式="#,##0;赤-#,##0"
[真偽値]
  C1: 表示値="TRUE" 生値="TRUE" 書式="General"
  C2: 表示値="FALSE" 生値="FALSE" 書式="General"
  C3: 表示値="TRUE" 生値="TRUE" 書式="General"
[シリアル値]
  2024/1/15 のシリアル値 = 45306
  1904 年形式の場合      = 43844
  wb.isDate1904()        = false

解説

getValue() と getValue(true)

呼び出し返る値用途
getValue()表示値(表示書式を適用した文字列)帳票出力、画面表示、CSV 書き出し
getValue(true)生値(内部保持値。日付はシリアル値、数式は計算結果)計算、比較、数値処理

どちらも戻り値は { "A1": "...", ... } のマップで、値はすべて文字列です。 数値として扱うには Number(...) で変換します。

const raw = Number(ws.getRange("A1:A1").getValue(true)["A1"]);   // 45306
const disp = ws.getRange("A1:A1").getValue()["A1"];              // "2024/1/15"

日付

数値・文字列

注意点

関連