Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 環境変数 LANG



2000年03月07日(火)19時24分JST
knokさんは書きました。
> <200003060756.QAA11844@xxxxxxxxxxxxxxxxx>の記事において
> usuda@xxxxxxxxxxさんは書きました。
> 
> >>  この際Namazu2.0.1付属のMMagic.pmでは
> >>  Excel95ファイルは(application/excel)として認識されますが
> >>  Excel97ファイルは(application/powerpoint)として認識されてしまいますので
> >>   下記の程度の追加が必要です。
> >>  # Reversed-engineered MS Office magic numbers
> >>  0	string		\320\317\021\340\241\261\032\341
> >>  >48	byte		0x1B		application/excel
> >>  0	string		\320\317\021\340\241\261\032\341 <=追加
> >>  >48	byte		0x1E		application/excel      <=追加
> 
>   これ、信用 ^^; しても良いでしょうか? 手元に Excel95 がないので確認で
> きないのですが、問題ないようなら次のバージョンの File-MMagic に追加し
> ようと思います。

信用してはいけません(ごめんなさい)
元のソースをしっかり読んでいなかったのでマジックナンバーの行を見た時点で
Excel95を特定するのに48バイト目を用いていると単純に思い込みテスト用に
手元にあったExcel97ファイルの48バイト目を覗いてみたところそれが
0x1Eだったので追加したものです。

今いくつかファイルを見てみたところ、どうもこれはまずいようです。
私自身はExcel97しか利用していないのですが、
Excel97の標準形式で保存したファイルはここの数値がばらばらです。
また、Excel95形式で保存させたときも0x1Bになっていないようで
やはりばらばらの数値になるようです。

xlHtmlのソースとExcelの吐き出すファイルを見比べると
Excel Ver4の場合は0x01バイト目(こういう呼び方でいいのでしょうか?)
に0x04が入っており
Excel95,Excel97は0x0205の箇所にそれぞれ0x05,0x06というバージョン番号
が入るようです。(Excel95についてはお手元のサンプルファイルで確認して
下さい。)
正確には0x09というOPcodeで始まるブロックの5バイト目ということ
なので0x0205の場所は時によって変化するのかも知れません。
他から送られてきたExcel2000で作成されたファイルも見て見るとこのブロック
は0x0A00辺りに存在するので、単純なパターンマッチングだけでは判定できな
いのかもしれません。

不正確な情報を投げて済みません。
私自身はExcelのデータに固執する気は失せてきました。
緊急性はありませんので無理のない程度にサポートを考えていただければ
十分です。
************************************************
臼田幸生 <usuda@xxxxxxxxxx>
建設省土木研究所  建設マネジメント技術研究センター