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

渡辺watanabe masaki php-users@php.gr.jp
Mon, 20 Jan 2003 11:08:56 +0900


渡辺です。

 Spreadsheet_WriteExcelについては、私にの場合
Perl CGIで使用していますが、
改行は、以下のように行っています。
参考になれば幸いです。

set_text_wrap() プロパティーを使用します。

例。

--------------------------------------------
set_text_wrap()
    デフォルト状態:     テキスト折り返しはオフ
    デフォルト動作:     テキスト折り返しをオンにする

これはテキスト折り返しプロパティを使う例です。
エスケープ文字\nが行の終わりを示すために使います:

    my $format = $workbook->addformat();
    $format->set_text_wrap();
    $worksheet->write(0, 0, "資産\n区分", $format);

--------------------------------------------------

"Y.Watanabe" wrote:

> わたなべです。
>
> 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検索のいろんな結果でみかけたのですが、
> 自分の上記のコードにどう反映させればよいのか
> いまいちつかめませんでした。
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users