古のExcel4.0マクロ。時折メンテ依頼を受けることがあります。
見ればなんとなくわかりそうな感じですが、確認したいときもあるわけで。
Microsoftのサポートページに関数の説明がいくつか残っている模様。
http://www.microsoft.com/ja-jp/search/SupportResults.aspx?form=mssupport&q=%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86
あとは英語版のリファレンスがDLできます。
http://www.microsoft.com/en-us/download/details.aspx?id=19243
拡張子.sitで圧縮されているのでWindowsだと解凍用ソフト(Stuffit Expander 等)が必要。
どっちもMac向け資料になってるけど。
2014年8月28日木曜日
2014年8月27日水曜日
[PHP]配列データをCSV出力
下記のPHPを読み込めばテストデータのCSVがダウンロードされる。
fputcsv() で配列からCSVのテキストに変換してくれる。
配列中にダブルクォーテーションやカンマが入ってもOK。
(Excel2010ならUTF-8のままでも文字化けせずに開いてくれるが、Excel2003で開かれないとも限らないので。。。)
実行するPHPファイルがUTF-8(BOM付き)だと、 mb_convert_variables() で正しくエンコードされないので注意。(BOM外し忘れててハマりました)
文字コードをShif-JISに変更してもファイル頭に「・ソ」がついてるから、BOMが残ったままShift-JISになってるんだろうな。
mb_convert_variables() は mb_convert_encoding() と違って返り値を拾わなくてOK。
fputcsv() で配列からCSVのテキストに変換してくれる。
配列中にダブルクォーテーションやカンマが入ってもOK。
//テストデータ
$arr = array(
array('1', '田中', 'あいうえお'),
array('2', '佐藤', 'かきくけこ'),
array('3', '山田', 'さしすせそ'),
array('4', '今"野', 'たち,つてと')
);
//出力用ヘッダ
header('Content-Type: text/csv; charset=Shift_JIS');
header('Content-Disposition: attachment; filename=data.csv');
//直接DL
$fp = fopen('php://output', 'w');
//配列ループ
foreach($arr as $arr_row){
mb_convert_variables('SJIS-win', 'UTF-8', $arr_row); //UTF-8をSJISに変換
fputcsv($fp, $arr_row); //配列をCSVに変換
}
fclose($fp);
CSVファイルをExcelで開くことを想定するとShift-JISにエンコードが必要。(Excel2010ならUTF-8のままでも文字化けせずに開いてくれるが、Excel2003で開かれないとも限らないので。。。)
実行するPHPファイルがUTF-8(BOM付き)だと、 mb_convert_variables() で正しくエンコードされないので注意。(BOM外し忘れててハマりました)
文字コードをShif-JISに変更してもファイル頭に「・ソ」がついてるから、BOMが残ったままShift-JISになってるんだろうな。
mb_convert_variables() は mb_convert_encoding() と違って返り値を拾わなくてOK。
登録:
投稿 (Atom)