[PHP-users 12630] Spreadsheet_WriteExcel を使ったexcel出力でのセル内改行の方法?
Y.Watanabe
php-users@php.gr.jp
Sun, 19 Jan 2003 21:59:09 +0900
わたなべです。
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検索のいろんな結果でみかけたのですが、
自分の上記のコードにどう反映させればよいのか
いまいちつかめませんでした。