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

書式設定のチュートリアル

書式設定のチュートリアル – スプレッドシート内のセルの書式を設定する方法

書式とは?

書式とは、Spreadsheet_Excel_Writer_Format 型の オブジェクトのことです。スプレッドシート内のセルに書式を適用することで、 書式のプロパティ (テキスト配置・背景色・フォントの色など…) を引き継ぐことができます。

使用法

書式を直接 new で作成することはできません。 書式を作成するには、ワークブックの addFormat() メソッドを使用する必要が あります。このメソッドは、ワークブックに書式を関連付けます (関連づけた書式を別のワークブックで使用することはできません)。

addFormat() の使用法を見てみましょう。

addFormat の使用法

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

// ワークブックを作成します。
$workbook = new Spreadsheet_Excel_Writer();

// 書式を作成します。
$format_bold =& $workbook->addFormat();
$format_bold->setBold();

?>

ここでは、太字の書式を作成しました。書式を作成する際にアンパサンド符号 (&) が使われていることに注意しましょう。このようにしなければ、 その後にする書式プロパティはすべて無視されます。

何か有用なものを作成する

書式を作成してみたものの、まだそれを使用していません。これはまずいですね。 さあ、この書式を使ってみましょう。

通常のデータが埋められたスプレッドシートを作成したとしましょう。 きれいに出来上がった作品を誇らしげに上司に見せに行ったときに、 恐れていたことが起こりました。

いやな上司 - ふむ、悪くないね。

あなた - ええ。指示されたとおりの合計欄を 追加しました。

いやな上司 - ふむ、知っているとは思うが、 このスプレッドシートはいろんなお客様がご利用になるんだよね……

あなた - それで……

いやな上司 - ふむ、この辺のヘッダの スタイルをちょっと変えてみたらどうだろう?

あなた - ……

もちろん、ことはヘッダだけにとどまらないでしょう。「ここの表題は センタリングしてくれないか?」「このセルをあっちのほうと連結して ほしいんだけど?」「このへんの表題には会社のイメージカラーを 使ってみたらどうだろう?」

これらの状況に対応するための方法はいくつかありますが、この チュートリアルでは、仕事をこなすためにその中のひとつだけを 取り上げます。

それでは、DotCom.com 用のスプレッドシートを作ってみましょう。

最初の例

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$format_bold =& $workbook->addFormat();
$format_bold->setBold();

// データを書き込むためのワークシートが必要です。
$worksheet =& $workbook->addWorksheet();
// これが表題です。
$worksheet->write(00"Dotcom.Com の収益"$format_bold);
// そしてこれがデータです。
$worksheet->write(000);

?>

さあ、あちこちの投資家たちが DotCom.com に投資したいと連絡して来ました。 でもちょっと待ってください。彼らはそんじょそこらの投資家ではありません。 たまたまインターネットで見かけたスタートアップ企業にそう簡単に貴重なお金を 投資することはないでしょう。というわけで、もう少し会社の色を出してみましょう!

2 番目の例

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$format_bold =& $workbook->addFormat();
$format_bold->setBold();

$format_title =& $workbook->addFormat();
$format_title->setBold();
$format_title->setColor('yellow');
$format_title->setPattern(1);
$format_title->setFgColor('blue');

$worksheet =& $workbook->addWorksheet();
$worksheet->write(00"Dotcom.Com の四半期ごとの収益"$format_title);
// もっといろいろな数字を載せましょう
$worksheet->write(10"四半期"$format_bold);
$worksheet->write(11"収益"$format_bold);
$worksheet->write(20"Q1");
$worksheet->write(210);
$worksheet->write(30"Q2");
$worksheet->write(310);

$workbook->send('test.xls');
$workbook->close();
?>

セルの連結

先ほどの例を試してみるとわかるように、表題を正しく表示するには 何個かのセルが必要です。しかし、書式指定は最初のセルにしか 効いていません。そのため、表題の見栄えがあまりよくありません。

これを何とかするにはどうすればいいでしょう? そう、上司にこう言うのです。 「私にはきれいに表示されているように見えますよ。いちど眼科に行ったほうが いいのではないですか?」それがいやなら、表題がいくつかのセルに またがって表示されるよう、セルを連結しましょう。

そのためには、引数に 'merge' を指定して setAlign() メソッドを使用します。そして 空のセルをいくつか用意することで、表題セルがそれを背景として「使用」 できるようにします (将来のバージョンの Spreadsheet_Excel_Writer では、これを もうすこしうまいやり方でできるようにする予定です)。

例で示したスクリプトにセルの連結を適用するには、このようにします。

セルの連結

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$format_bold =& $workbook->addFormat();
$format_bold->setBold();

$format_title =& $workbook->addFormat();
$format_title->setBold();
$format_title->setColor('yellow');
$format_title->setPattern(1);
$format_title->setFgColor('blue');
// 連結します。
$format_title->setAlign('merge');

$worksheet =& $workbook->addWorksheet();
$worksheet->write(00"Dotcom.Com の四半期ごとの収益"$format_title);
// 空のセルの見栄えをよりよくします。
$worksheet->write(01""$format_title);
$worksheet->write(02""$format_title);
$worksheet->write(10"四半期"$format_bold);
$worksheet->write(11"収益"$format_bold);
$worksheet->write(20"Q1");
$worksheet->write(210);
$worksheet->write(30"Q2");
$worksheet->write(310);

$workbook->send('test.xls');
$workbook->close();
?>
Excel ファイルを生成する方法 (Previous) ワークブックの作成終了時のメソッドを呼び出す (Next)
Last updated: Wed, 16 Apr 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: ngiraldo@securities.com
Excel 2010 does open the file correctly.

You just have to add this before creating the worksheets:

$workbook->setVersion(8);

Note by: shusting@aeteam.net
Windows 7 Excel 2010 does not open the Excel downloads generated by this PHP code (while Excel in Win XP and Vista do).

Someone confirmed this, saying, "Yes, it seems that Excel will no longer open files with the .xls extension if they are formatted as TAB-delimited text or CSV."

In previous versions of Windows, the file downloaded and opened in Excel fine. But in the 2010 scenario in Win 7, for the same files, a dialog pops up with, "The document is corrupt and cannot be opened. To try and repair it, use the Open and Repair command in the Open dialog box and select Extract Data when prompted." Following these directions fails silently.

Is there an update we should be aware of for Excel 2010 in Win 7?
Note by: pratiksha88.j@gmail.com
Hi, I tried this code but i am getting my webpage contents printed to the excel sheet. any help really appreciated.

I installed spreadsheet and ole latest versions.
here is my code

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

// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();

// sending HTTP headers
$workbook->send('test.xls');

// Creating a worksheet
$worksheet =& $workbook->addWorksheet('My first worksheet');

// The actual data
$worksheet->write(00'Name');
$worksheet->write(01'Age');
$worksheet->write(10'John Smith');
$worksheet->write(1130);
$worksheet->write(20'Johann Schmidt');
$worksheet->write(2131);
$worksheet->write(30'Juan Herrera');
$worksheet->write(3132);

// Let's send the file
$workbook->close();
?>
Note by: zuraforl2@gmail.com
(Spreadsheet/Excel/Writer.php)

for this download http://pear.php.net/package/Spreadsheet_Excel_Writer/download
Note by: mustang342891@GMAIL.com
(Spreadsheet/Excel/Writer.php) WHERE THIS FILE ...............