既に10日以上過ぎてますが、バレンタインの手作りチョコ用の型やチョコ、ポッキーがまだ我が家にあります。
14日、娘は1月中に「これやりたい!」と選んだ型にチョコを流し込むよりもねるねるねるねを選びました…いや、今日はチョコの日だよ?と言ってもねるねるねるねの魔力に勝てない。さて、今週末にでもバレンタイン予定、何これ。ぬーです。
今回は以下はがっつり?専門的な事を書いていきます。ですが、所謂インストールの為のガイドなどではありません、ご了承くださいwww
因みにファイルメーカー13と、PHPの連携のハナシだと思ってつらつら読んでくだされ。
【最終目標1】エクセルのバージョンを問わずにファイルメーカー内でブラウザを利用してエクセルファイルを閲覧したい。
【最終目標2】ファイルメーカーからPDFを生成してほしい。(印刷出来る、サイズ調整などしなくてよいフォーマットにしてほしいとのことでPDFを選択)
今回は1について。
簡単に言うと、昔のブラウザだと普通にエクセル開けたんだけど最近のは開けなくなったよね、さあどうするの?ってところから相談を受けました。
そんな訳でこれを導入する事に。
xlsファイルを読み込んで、ブラウザにテーブルとして表記するというもの。
完全に表示用です。
目的は表示なのでまぁこれで良し、です。よし、だったのですが後に今更?っていう仕様変更を強いられるのはまた別のハナシw
これはね、簡単。
これを利用するような技術者なら別にここで設置方法書かなくていいレベル。
但し、これは一つ問題がありました。
拡張子がxlsのものしか対応してません。
つまりPHP Excel Readerでは2007以降のバージョンで作られたエクセルファイルはうまく表示しないと。
うん、流石にこれじゃ困る。そんな訳でこれを入れてみる事にしました。
一方コチラはエクセルファイルを生成、書き込み出来るライブラリ。
そして保存形式まで選択可能。
対象ファイルの拡張子をマッチさせて、xlsxなら書き換えたらいいんじゃないかな?と考えたのでした。
ですが・・・。
悉く失敗。
そういえば。
2007以前はバイナリファイル。
以降のもの、拡張子がxlsxのものは形式が違うんです。Open XML形式。
しかもxlsxファイルを互換で保存したら旧バージョン表示用と現行バージョン表示用と、内部的には二つのデータを持つのね。
だから保存形式選んで保存するといきなりファイルサイズが倍くらいになってるって言う。
もっと厳密に言うと、2007 以降のものは内部の文字コードがUTF-16LE。
LEって何だよ、リトルエンディアンです、ってのはこちらをどうぞ。
まぁ互換形式で保存したものと純粋な元ファイルの両方をバイナリエディタで開けば一目瞭然。中身全然違う訳ですね。
さあ困った。困ったぞう。
単純な数値だけ、みたいなエクセルファイルならもしかしたらPHP Excel Readerで表記に問題は無いかもしれない。たまたまそのファイルの内容が大丈夫なだけの可能性は否めないけど。
数値と言ってもいろいろあるしね。
因みに関係ないけどエクセルって日時のデータは指定した日付型で持つ訳じゃなくてUINX秒なんだよね、そりゃそうだよね、だから単純に形式変換出来てたんだな、とか今更知ったのもこの時。
つまり、エンコードをもにょもにょするか、バイナリで見た際の「00」をどうにかするか・・・
この辺の処理をどうしようか、ってのは今後の課題・・・。
探してみたけど意外と無かったんだよね。作るかな。
これが先々週までのハナシで、これにつきっきりでブログとか開く精神的余裕も無かったのですよーって言う・・・。