[PHP-users 12661] Re: Spreadsheet_WriteExcel を使ったexcel出力でのセル内改行の方法?

Y.Watanabe php-users@php.gr.jp
Mon, 20 Jan 2003 15:22:28 +0900


わたなべです。
ありがとうございました。
下記のコードで期待通りにできたようです。

set_text_wrap();
なんてメソッドがちゃんとあるわけですね。
#ソースをよく読もう・・・。


<?php
  //require_once('OLEwriter.php');
  //require_once('BIFFwriter.php');
  require_once('Worksheet.php');
  require_once('Workbook.php');

/**** 画面でやるときはこのコメントアウトははずす(CLIでやるときはいらないから  
  function HeaderingExcel($filename) {
      header("Content-type: application/vnd.ms-excel");
      header("Content-Disposition: attachment; filename=$filename" );
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
      header("Pragma: public");
  }
  // HTTP headers
  HeaderingExcel('test.xls');
****/

  // Creating a workbook
  $workbook = new Workbook("-");
  $worksheet1 =& $workbook->add_worksheet('First One');
  $worksheet1->write_string(1, 1, "abc"); // B2のセルに"abc"という文字列が入る

  $formatot =& $workbook->add_format();
  $formatot->set_text_wrap();

  $worksheet1->write_string(2, 1, "d\nef", $formatot ); // B3のセルに"d(セル内改行)ef"が入る
  $workbook->close();
?>





Y.Watanabe wrote on 2003/01/19 21:59
with Subject: [PHP-users 12630] Spreadsheet_WriteExcel を使ったexcel出力でのセル内改行の方法?

>わたなべです。
>
>Linux環境のWEB/DBサーバにおいて、
>PostgreSQLのデータをPHP経由でMs-Excel形式にしてダウンロードさせる
>というアプリをつくるべく奮闘しておりますが、
>細かいところで詰まっております。
>
>どなたかお知恵ありませんか?
>
>要は、セル内改行(Alt+Enterキーってやつ)が
>うまくできないのです。
>(なんでそんな凝ったことすんの?、というツッコミはさておき^^;)
>
>
>Windwos環境ならCOM関数であっさりできそうですが、
>UNIX環境でもphpでExcel出力できるものを探すのは苦労しました。
>
>    Spreadsheet_WriteExcel
>    http://phpclasses.psbweb.com/browse.html/package/767.html
>という、結構イケてそうな(気がする)ライブラリを見つけたので、
>それを使おうとしております。
>
>下記が試したテストスクリプトです。
>(上記のパッケージに入っていたテストスクリプトを参考につくった)
>
><?php
>  //require_once('OLEwriter.php');
>  //require_once('BIFFwriter.php');
>  require_once('Worksheet.php');
>  require_once('Workbook.php');
>
>/**** 画面でやるときはこのコメントアウトははずす(CLIでやるときはいらないから)
>  function HeaderingExcel($filename) {
>      header("Content-type: application/vnd.ms-excel");
>      header("Content-Disposition: attachment; filename=$filename" );
>      header("Expires: 0");
>      header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
>      header("Pragma: public");
>      }
>  // HTTP headers
>  HeaderingExcel('test.xls');
>****/
>
>  // Creating a workbook
>  $workbook = new Workbook("-");
>  $worksheet1 =& $workbook->add_worksheet('First One');
>  $worksheet1->write_string(1, 1, "abc"); // B2のセルに"abc"という文字列が入る
>  $worksheet1->write_string(2, 1, "d\nef"); // B3のセルに"d(セル内改行)ef"と
>                                            //いう文字を入れたいが文字化けてしまう
>  $workbook->close();
>?>
>
>
>上記のスクリプトをtest.phpとして保存し、
>
>$ php test.php > test.xls 
>
>としてできあがったファイルをEXCELで見ると、
>B3のセルの改行文字が化けてしまいます。
>(□みたいな文字に・・・)
>
>「エクセルのセル内改行は、0x0aコードがうんぬん・・・」
>という情報はgoogle検索のいろんな結果でみかけたのですが、
>自分の上記のコードにどう反映させればよいのか
>いまいちつかめませんでした。
>
>
>