tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: VB6環境で xlsxファイルの出力
投稿日: 2013/06/17(Mon) 10:52
投稿者魔界の仮面弁士
> VB6環境で作成したアプリケーションで、xlsファイル(EXCEL2000〜2003形式)を出力しています。
現状はどのようにして作成していますか?

*.xls のバイナリーフォーマットは公開されてはいますが、よもや、
Excel ファイルの BIFF バイナリを手動生成しているわけでは無いのですよね?
http://www.microsoft.com/openspecifications/en/us/programs/osp/office-file-formats/default.aspx

Jet I-ISAM Export を使用しているのか、Excel オートメーションを使っているのか、
サードパーティー製品(Excel Creator 等)なのか…。
(Jet や Excel Creator 等の場合、実行環境に Excel は無くても済みます)


> VB6で xlsxファイル(EXCEL2007形式)を出力することは可能でしょうか。
可能です。Office Open XML の仕様は公開されていますので、極端な話、手間さえ
惜しまなければ xlsx のファイルを自前で生成することも、理論的には可能です。
http://ja.wikipedia.org/wiki/Office_Open_XML

実際には自己生成は現実的では無いため、何らかのライブラリやツールを
併用した方が良いでしょう。


> ライブラリをインポートでxlsファイルを出力可能となる
VB6に「インポート」という機能があったかどうかはさておき、「参照設定」の意味であれば、
Excel オートメーションを使う方法(VB6 から Office 2007/2010 を参照設定して利用)や、
サードパーティ製品(Excel Creator 等)を使っての出力などが該当しそうですね。


> xlsファイル出力後、コンバートソフトをキックして xls→xlsx変換させる
その方法も使えますが、可能であれば最初から xlsx を生成した方が手っ取り早そうです。

それに、そもそも xls で事足りるようなドキュメントを、わざわざ xlsx に
変換する意味があるのかについても、多少の疑問が残ります。


> VB6環境をnet環境へ移管し、xlsxファイルで出力するように修正する
.NET からの生成ならば、CodePlex で公開されている「ClosedXML」あたりが有名ですね。
http://closedxml.codeplex.com/

その他、EPPlus という物もあります。
http://epplus.codeplex.com/

Java 系から移植されてきた NPOI 2.0 という .NET ライブラリも知名度が高いです。
http://npoi.codeplex.com/releases/

あとは…市販パッケージになりますが、SmartXLS、SpreadsheetGear、Excel Creator 等々。
http://www.smartxls.com/
http://www.xlsoft.com/jp/products/SSG/product.html
http://www.adv.co.jp/product/product_excelcreator2012.htm


なお、.NET 標準で Excel 出力する機能は用意されていません。この点は VB6 と同じです。
ただし、Office を操作するためのライブラリは用意されているため、VB6 と同様に
オートメーション操作という形を取ることもできます。ただし、VB6 の頃に比べると
ActiveX オブジェクトの解放処理が面倒になっていますので、個人的にはあまりお奨めしません。


また、Microsoft 公式で「Open XML SDK」が提供されていますが、
OOXML SDK 自体、あまり使いやすいものでは無いため個人的にはお奨めしません。
http://www.microsoft.com/ja-jp/download/details.aspx?id=5124

(先の ClosedXML 等は、OpenXMLを使いやすくまとめたライブラリです)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。