1. 導入
  2. 書式設定のチュー
    トリアル
  3. Workbook::close
  4. Workbook::&addWorksheet
  5. Workbook::&addFormat
  6. Workbook::setCountry
  7. Workbook::&setTempDir
  8. Workbook::setVersion
  9. Workbook::setCustomColor
  10. Workbook::worksheets
  11. Worksheet::getName
  12. Worksheet::
    setInputEncoding
  13. Worksheet::select
  14. Worksheet::activate
  15. Worksheet::setFirstSheet
  16. Worksheet::protect
  17. Worksheet::setColumn
  18. Worksheet::writeCol
  19. Worksheet::writeRow
  20. Worksheet::setSelection
  21. Worksheet::freezePanes
  22. Worksheet::thawPanes
  23. Worksheet::
    hideScreenGridlines
  24. Worksheet::setPortrait
  25. Worksheet::setLandscape
  26. Worksheet::setPaper
  27. Worksheet::setHeader
  28. Worksheet::setFooter
  29. Worksheet::setMerge
  30. Worksheet::
    centerHorizontally
  31. Worksheet::
    centerVertically
  32. Worksheet::setMargins
  33. Worksheet::setMargins_LR
  34. Worksheet::setMargins_TB
  35. Worksheet::setMarginLeft
  36. Worksheet::
    setMarginRight
  37. Worksheet::setMarginTop
  38. Worksheet::
    setMarginBottom
  39. Worksheet::repeatRows
  40. Worksheet::repeatColumns
  41. Worksheet::printArea
  42. Worksheet::hideGridlines
  43. Worksheet::
    printRowColHeaders
  44. Worksheet::fitToPages
  45. Worksheet::
    setHPagebreaks
  46. Worksheet::
    setVPagebreaks
  47. Worksheet::setZoom
  48. Worksheet::setPrintScale
  49. Worksheet::write
  50. Worksheet::writeNumber
  51. Worksheet::writeString
  52. Worksheet::writeNote
  53. Worksheet::writeBlank
  54. Worksheet::writeFormula
  55. Worksheet::writeUrl
  56. Worksheet::setRow
  57. Worksheet::mergeCells
  58. Worksheet::insertBitmap
  59. Worksheet::setOutline
  60. Spreadsheet_Excel_Writer
  61. send
  62. rowcolToCell
  63. Format::setAlign
  64. Format::setVAlign
  65. Format::setHAlign
  66. Format::setMerge
  67. Format::setLocked
  68. Format::setUnLocked
  69. Format::setBold
  70. Format::setBottom
  71. Format::setTop
  72. Format::setLeft
  73. Format::setRight
  74. Format::setBorder
  75. Format::setBorderColor
  76. Format::setBottomColor
  77. Format::setTopColor
  78. Format::setLeftColor
  79. Format::setRightColor
  80. Format::setFgColor
  81. Format::setBgColor
  82. Format::setColor
  83. Format::setPattern
  84. Format::setUnderline
  85. Format::setItalic
  86. Format::setSize
  87. Format::setTextWrap
  88. Format::setTextRotation
  89. Format::setNumFormat
  90. Format::setStrikeOut
  91. Format::setOutLine
  92. Format::setShadow
  93. Format::setScript
  94. Format::setFontFamily

Format::setNumFormat

Format::setNumFormat – 数値の表示形式を設定する

Synopsis

require_once "Spreadsheet/Excel/Writer.php";

void Format::setNumFormat ( string $num_format )

Description

数値の表示形式を設定します。これには日付・時刻・通貨など…… も含まれます。以下の表では、使用可能な $num_format の値と それぞれに対して引数として受け付ける型を示します。

数値の表示形式および型
0 十進数 ゼロの数で、表示される桁数を指定します。
0.00 十進数 小数点以降のゼロの数で、表示される小数の桁数を指定します。
#.## 十進数 小数点以降のシャープの数で、表示される小数の最大の桁数を指定します。
0% パーセント ゼロの数で、表示される桁数を設定します。
0.000% パーセント 小数点以降のゼロの数で、表示される小数の桁数を指定します。
$#.#;[Red]($#.#) 通貨 ゼロおよびシャープの意味は、他の書式と同じです。
??/?? 分数 分母のクエスチョンマークの数で、値の精度 (分母の最大の桁数) を指定します。
# ??/?? 分数 整数部分を持つ分数です。整数部の書式はゼロおよびシャープで 定義し、その意味は他の書式と同じです。
0.00E+# 科学 科学的な表記法における基数および指数は、十進数と同様に書式化されます。 ゼロおよびシャープの意味は同じです。
D-MMM-YY 日付 指定した表記法で日付を表します。月は 1 桁あるいは 2 桁の数値、 あるいは 3 文字の月名で表します。年は 2 桁あるいは 4 桁で指定します。 日付として扱われる値は、1899 年 12 月 30 日 (Excel のゼロ日) からの 経過日数です。ゼロ日より前の日付を表すには、負の数値を使用します。
D/M/YYYY h:mm:ss 日付/時刻 指定した表記法で日付を表します。日付として扱われる値は、 Excel のゼロ日からの経過日数です。
h:mm:ss AM/PM 時刻 指定した表記法で時刻を表します。時刻として扱われる値は、 日数で指定することに注意しましょう。例えば、0.5 という値は '12:00:00 PM' と表示されます。

この情報は、Microsoft Excel のファイル形式について書かれた OpenOffice.org のドキュメント (http://sc.openoffice.org/excelfileformat.pdf) から引用したものです。

Parameter

  • string $num_format - 数値の表示形式。

Note

This function can not be called statically.

Example

setNumFormat() の使用法

<?php
require_once 'Spreadsheet/Excel/Writer.php';

$workbook = new Spreadsheet_Excel_Writer();
$worksheet =& $workbook->addWorksheet();

// 4 桁の年、3 文字の月の形式で日付を表示します
$date_format =& $workbook->addFormat();
$date_format->setNumFormat('D-MMM-YYYY');

// 1 日の秒数
$seconds_in_a_day 86400;
// Unix タイムスタンプと Excel の日付の差を秒数で表します
$ut_to_ed_diff $seconds_in_a_day 25569;

// Excel のゼロ日を表示します
$worksheet->write(00"Excel の day zero");
$worksheet->write(010$date_format);

// 今日の日付を表示します
$now time();
$worksheet->write(10"今日の日付:");
$worksheet->write(11, ($now $ut_to_ed_diff) / $seconds_in_a_day$date_format);

$workbook->send('num_formatting.xls');
$workbook->close();
?>
テキストの方向を設定する (Previous) フォントに取り消し線を設定する (Next)
Last updated: Wed, 01 Oct 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: daniel@abrich.eu
The problem is that I can't use polish currency "z?" as a NumFormat. Any suggestions?
Note by: i@peter.am
Full table of formats:
http://img808.imageshack.us/img808/5599/formats.png
Note by: sascha_moetsch@hotmail.com
The format can also be defined by a number, so f.e.
$f_standard->setNumFormat(0);
gives you a Standard-Number.

A complete list of all indexes can be found here:
http://openbook.galileocomputing.de/php_pear/05_0_file_formats-007.htm
(in Table 5.8)
Note by: amit.more@xecomit.com
I have generated the excel spreadsheet using Spreadsheet_Excel_writer. Every thing is working fine in Openoffice, but in MS Office when I try to change cell format lets say For currency then every time i am getting this error "Style 'Currency' not found" or for comma "Style 'Comma' not found"?
Suggestions are welcome.
Note by: a.eibach@gmx.net
After 45 (!) minutes of searching, I finally found the solution to my problem in the PERL original of SEW.
I hope this will help out other desperate folks here.

My problem was that the numbers looked OK in Excel if you didn't touch a thing, but once you moved around in the cells, Excel (I use 2007) always kept transforming the cell to a sort of date format; nor were I able to explicitly set TEXT format, i. e. absolutely static.

The trick is simple, and of course, magnificent: :)

$fmt =& $xls->addFormat();
$fmt->setNumFormat('@');

Now your TEXT will stay TEXT and even Excel will recognize the format as text, if you check back in cell properties.
Note by: user@example.com
As the time or strtotime functions generate timestamp according to the timezone setting, the excel date given by the sample code might not be correct for computers not having the timezone as UTC, so add the following codes at the beginning.


if (function_exists('date_default_timezone_set')) {
date_default_timezone_set('UTC');
}
Note by: zetflo@gmail
Hi,

perhaps, this library support only the symbol $.

I've the same problem with symbol ¤
Note by: oldhand@fusemail.com
Noticed some strange behaviour with this when setting more complicated number formats e.g. currency

I was trying to set currency to display for UK pounds as follows £159,000

The format for this is £#,##0;-£#,##0

When setting this the format appeared to get corrupted by character encoding as my PHP file was UTF8 format.

If I forced the formatting to ISO-8859-1 before inserting this everything worked - see example below:

$myNumFormat = '£#,##0;-£#,##0';
$iso88591Format = iconv("utf-8","iso-8859-1",$myNumFormat);
$cFormat =& $xls->addFormat();
$cFormat->setNumFormat($iso88591Format);

Hope that helps saves someone else a few hours!