行いたいと思います。
前回と同様に、ReadCelRangeAddressTestというクラスを作ってみて、
下記のソースコードをコピーして実行してみてください。
============================================ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.util.CellRangeAddress; public class ReadCelRangeAddressTest extends ReadCellTest { public static void main(String[] args) throws FileNotFoundException, IOException{ //xlsファイルを開くときの書き方 POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("C:\\temp\\sample.xls")); //エクセル全体を最初に開く HSSFWorkbook wb = new HSSFWorkbook(fs); //1番目のシートを開く(プログラム上は、0から始まるので、0が1番目を意味して1は2番目を意味する) HSSFSheet sheet = wb.getSheetAt(0); System.out.println("結合されたセルの数:"+sheet.getNumMergedRegions()); for (int i=0;i<sheet.getNumMergedRegions();i++){ //i番目の結合情報を取得する。 CellRangeAddress range = sheet.getMergedRegion(i); System.out.println(i+"番目:"+range.formatAsString()); } } } ============================================
実行すると実行結果が下記のよな感じになっていると思います。
============================================ 結合されたセルの数:15 0番目:B6:C6 1番目:B1:C1 2番目:B2:C2 ...以下略 ============================================
B6:C6というのは、接合されたセルの左上の位置と、右下の位置を
文字列で表現したものです。「B6:C6」の場合には、
左上が、「B列の6行目」
右下が、「C列の6行目」
というのを意味します。
また、
sheet.getNumMergedRegions()
はシート内に、何個の結合セルがあるかというのを返します。
http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#getNumMergedRegions()
sheet.getMergedRegion(i)
では、シート内のi番目の結合セル情報を取り出します。
http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#getMergedRegion(int)
range.formatAsString()
は、その結合セル情報の文字列表現を取得します。
それが、「B6:C6」みたいな表現になります。
http://poi.apache.org/apidocs/org/apache/poi/ss/util/CellRangeAddress.html#formatAsString()
というわけで、今までやってきたことを組み合わせていくと、
・複数のシートにある情報をひとつのシートにまとめる
というようなプログラムも作成でいると思います。
0 件のコメント:
コメントを投稿