[Namazu-devel-ja 1431] Re: Office 2007, Visio 2007 対応

Yukio USUDA m6694ha392t @ asahi-net.or.jp
2007年 1月 15日 (月) 02:26:04 JST


臼田です

On 2007/01/15, at 1:31, Tadamasa Teranishi wrote:
> 以下のサンプルを作成して試してみました。
> ・Excel で複数シート。セルに年月日、金額を入れる。
> ・Word に Excel のシートを貼り付ける。

サンプル作成ありがとうございます。
仕様書は6000ページ以上あるので簡単に読めないので助かります。

>
> Yukio USUDA wrote:
>>
>> ・Excelで2枚目以降のシートに書かれた文書を取得できるか
>> という点が気になっています。
>
> 2枚目以降のシートでも文字列は取得できるようです。
> ただ、これは仕様なのかもしれませんが、セルに年月日だとか、
> 金額を入れている部分は取り出せないようです。

どうも文字列だけは一つのファイル xl/sharedStrings.xml にま 
とめて
入れてあるようです。
固定文字列でない計算結果やセルの書式上のものは
自力で数式をパースして作成しなければいけないのかもしれません。
今回のサンプルにある
「2007年1月15日」「\5,000」は
xl/worksheets/sheet3.xml 内に
<row r="3" spans="1:3"><c r="B3" s="1"><v>39097</v></c><c r="C3"  
s="2"><v>5000</v></c></row>
として入っていました。そのままとりだした場合
5000 は意味がありますが、 39097 は 2007年1月 
15日の代用にはならないと思います。


> また、シート名も取り出せないようです。
xl/workbook.xml に
<sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/><sheet  
name="Sheet2" sheetId="2" r:id="rId2"/><sheet name="Sheet3"  
sheetId="3" r:id="rId3"/></sheets>
という箇所があるのでここから抽出すればよさそうです。


>
>> また、積極的にサポートするつもりはないのですが
>> ・OLE コンテナで Word に Excel の表を張り付け
>> た場合に
>>    Excel の表内の文書が取得できるか
>> という点も気になっています。
>
> こちらは取り出せないようです。

word/embeddings というフォルダ内に
Microsoft_Office_Excel_______1.xlsx
Microsoft_Office_Excel_______2.xlsx
という2つのファイルが入っていて中身は
zip アーカイブになった xml ファイルで Excelのファイ 
ルのようです。
MS-Word の 場合は word/embeddings フォルダ内のファイ 
ルを
再帰にかけて処理していけばよさそうです。

ちなみに win32/ole*.pl では取り出せるのでしょうか?
できるようでしたら msofficexml.pl でも処理を追加してみるつ 
もりです。


>
>> これは、サンプルまで用意する必要はないかと思いますが
>> マクロが有効になった文書は拡張子が変わり
>> docm, xlsm, pptm になるようです。
>> http://office.microsoft.com/ja-jp/help/HA100069351041.aspx
>
> はい。マクロが有効になった文書をインデックス対象にするか否かは
> 難しいところなので、とりあえず今回は除外しています。

msofficexml.pl の方法であればマクロも関係ないのですが
win32/ole*.pl の方式だと気になりますね。

>
> わざわざ拡張子を分けた意味とか、もう少し背景を理解してから対応を
> 考えた方が良いのかなと...。

そうですね。


今回は MS-Office2007 発売前だし
先に Namazu 2.0.17 をリリースするのであれば
現状で十分だろうと思っています。
ただ、フォーマットはXMLで仕様書も
公開されていることですし対応できるものは対応していこうと思います。

臼田幸生




Namazu-devel-ja メーリングリストの案内