Search

2012/05/06

SharpDevelop3でNPOIを試す

JAVAのオフィスコンポーネントにApachePOIがある。
これを.netに移植しているのNPOIというものもある。
現在のNPOIはExcelのみ対応。しかもxls形式のバージョンのみ。
これをSharpDevelopで使えるのか試してみた。

Windows7であれば、SharpDevelopを解凍すれば、すぐに使用できる。
解凍したフォルダの SharpDevelop/3.0/bin/SharpDevelop.exeを起動。
それ以外のWindowsは、.net3.51頒布版のインストールが必要だと思う。

NPOIのdllをダウンロードしてサンプルを試してみた。
NPOIは.net2.0で動作するので、Win7ならそのままでOK。
ただし、参照のNPOIは入手したパスに設定し直す必要がある。
さらに、コンパイルのターゲットCPUを32bitに変更。
すると、サンプルは問題なく動いた。
セルの色を変えたり、数式を入れたりもできるようだ。

とりあえず、KingsoftOfficeで作成したxlsファイルを読んで、コンソールに
表示してみるコードを書いてみた。日本語も読めるようだ。

上記のサンプルコードを記載しておく。
サンプルを動かすには、SharpDevelopで下記の手順ソリューションを作成。
ファイル>新規作成>ソリューション>Windowsアプリケーション>コンソールアプリケーション
NPOI.dllも参照に追加する。


ただし、SharpDevelop3のデバッグはターゲットCPUが32bitに限定されている。
プロジェクトのターゲットCPUを32bitにして置く必要がある。
でも、Releaseなら「あらゆるプロセッサ」の設定で、64bitとして動作する。
これらの設定をすれば、以下のコードをコピペすれば動くかもしれない。
環境は、Windows7HomePremiumの64bitだった。

----------とりあえず動いたサンプルコード。問題多し!---------
using System;
using System.Text;
using System.IO;

using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Extractor;
using NPOI.POIFS.FileSystem;

namespace testnpoiread
{
class Program{
public static void Main(string[] args){
String fileName = "c:\\test\\test.xls";
HSSFWorkbook workbook = new HSSFWorkbook( new FileStream(fileName, FileMode.Open));
ExcelExtractor extractor = new ExcelExtractor(workbook);

Console.Write(extractor.Text);
Console.ReadKey(true);
}
}
}

----------とりあえず動いたサンプルコード。問題多し!---------

動くには動いたが、NPOIの詳細なドキュメントは無い。
「POIをドキュメントを読んでね」となっている。
POIのクラスの意味はさっぱり分からない。
まずは、NPOIに付属するサンプルコードの解析からはじめてみようと思う。
と言っても、JAVAもC#も知らないので、テキストを買ってみよう。

TonyQuさんのNPOI講座があります。中国語ですが、何となく分かるかも・・・。


今回の契機は、KingsoftOfficeでマクロが使えないことにあった。
置換機能なども、機能が少ない。
これ補完するために、C#とNPOIのアプリで、なんとかできないだろうか。
そんな感じではじめてみた。

それにしても、中国の方々の開発力はすごいと思って。
せっかくなので、KingsoftOfficeにNPOIのIDEでも付属して欲しい。

0 件のコメント:

コメントを投稿