文書管理的なものが作れないか…のテスト
ファイル検索のツール作りながら、「文書管理的なツール、作れんかな?」と。
フォルダ階層で管理(?)されているファイルサーバがあるのだが、先達が決めたルールでフォルダ作ったり、ファイル配置したりしているもんで、どうにも馴染めない。「客先ー設備」括りで構成されている部分等は、あちこちのフォルダに「仕様書」であったりだとか「検査証」であったりだとか、一様のファイルを探すのに苦労してしまう。全文検索もできないし…。
文書管理システムを導入すればそのあたりは解消できるのだろうけれども…。
まぁ、文書管理システム導入の提案は追々するとして、自力で「そのようなもの」を作れないかと。
フォルダ階層はそのまま保持し、フォルダやファイルにタグのようなものを割り当てて、例えば機種別ツリー表示や文書タイプ別ツリー表示ができればいいかと。もちろんキーワード含む文書の検索は全文検索できて、かつ指定範囲からの検索…なんてのができれば…。
全文検索はともかく、ツリー表示のところは時間かければ何とかなりそう…と高を括る。
で、まぁ、文書管理と言えば「プレビュー表示」でしょう。
これができんとタグ付けも面倒だし。
PDFは実績あるので問題なし。大量にあるOffice文書をプレビューで表示したい、というのが今回の課題。
で、調べてみた。
環境はVisual Studio7、Officeは概ね365。
「VB.net Office プレビュー」とか「VB.net Excel 表示」とかでググってみると、同じようなことを考えているらしい質問はちらほら。しかし、コレ! といった回答がない。
OLEとかの時代だとデスクトップアプリにインラインでExcel文書を表示させるみたいなこともできてたみたいなんだが、どうもよくわからない。
「WebBrowserコントロールを使えば…」みたいなことが書いてあったので試してみた。
うーん。指定したWord文書を開くかどうかのダイアログが出て、「開く」をクリックすると別でWordが立ち上がる。
確かに指定したファイルが開かれていることには違いないが、思っているのとは違う。
上のページを読み進めていくと、
”2007の Office プログラムは Web ブラウザーで Office ドキュメントを開かないようになっています。 この動作は、WebBrowser コントロールにも影響します。”
とのこと。
WebBrowserコントロールの代わりにカスタムActiveXドキュメントコンテナーを使え、と。
早速ググるも有益な情報がない。
レジストリ弄ればWebBrowserコントロールでもインラインでOfficeファイルを開けるようになるらしいことが記述されていたので、リンクに飛ぼうとするも404エラー。
「インターネットエクスプローラー Office 表示」等で検索し、レジストリのどこを弄ればよいかの情報を漁る。
これかな?
http://niyodiary.cocolog-nifty.com/blog/2009/08/excelwordpowerp.html
情報は決して新しくはなさそうだが…。
試しにレジストリエディタで[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.DocumentMacroEnabled.12]
だけ弄り、IEにWordファイル(.docx)をドラッグドロップしてみる。
…と、「このファイルを開きますか?」的なダイアログは相変わらずだが、IE上でインライン表示するのを確認。
そのままVisual Studioでさっきのプロジェクトを試してみる。
画面左側にPanel1(Dock=Left)、右側上部Panel2(Dock=Top)、右側下部Panel3(Dock=Fill)の構成。WebBrowserコントロールはPanel3上に貼り付け。サイズ調整していないが、勝手にPanel3全域に貼り付けられた状態(?)
うーん。まぁ、一応Word文書は表示されてはいるが…。
Button2クリックでWebBrowserコントロールのNavigateに指定ファイル(コード直書き)を割り当ててるだけだが、やっぱり「開く?」のダイアログ出るし、「開く」を選択してからこの状態になるまで2、3秒待たされる感じだし…(ちなみに当該Wordファイルのサイズは20KB)。
何よりメニュー要らないし!
表示エリアの問題はなんとかなりそうだけれども…。
単なるプレビューでいいんだけどなぁ…。
今のところはインラインで開けただけでヨシとしておこう。
時間あれば改めてテストしていくことにする。