人気ブログランキング | 話題のタグを見る
(.Net,OpenOffice).NetからCalcの行の挿入、削除を行う
(.NetからOpenOfficeを操作する方法は(.Net,OpenOffice).Net から OpenOffice ドキュメントを操作するを参照。OpenOfficeは3.2です。)

Calc操作時に、行を挿入、削除する方法です。


OpenOffice SDKのサンプルにやりたいことが書いていました。
サンプルは、OpenOffice.org_3.2_SDK\sdk\examples\CLI\CSharp\Spreadsheet\GeneralTableSample.cs の doFormattingSamples メソッドに書いてあります。

ほぼサンプルそのままですが、一応ソース載せておきます。(C#)

//下記の型インポート必要
using uno.util;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.sheet;
using unoidl.com.sun.star.table;
using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.beans;
using unoidl.com.sun.star.util;
using unoidl.com.sun.star.container;
 
string filename = @"d:\a.ods";
 
//ファイルパスを変換
Uri uriCalcFile;
Uri.TryCreate(filename, UriKind.Absolute, out uriCalcFile);
filename = uriCalcFile.ToString();
//コンポーネントコンテキストオブジェクト取得
XComponentContext context = Bootstrap.bootstrap();
//サービスマネージャ取得
XMultiServiceFactory factory = (XMultiServiceFactory)context.getServiceManager();
//コンポーネントローダオブジェクト取得
XComponentLoader loader = (XComponentLoader)factory.createInstance("com.sun.star.frame.Desktop");
//ドキュメントオブジェクト取得
XSpreadsheetDocument doc = (XSpreadsheetDocument)loader.loadComponentFromURL(filename, "_blank", 0, null);
//シート取得
XSpreadsheets sheets = doc.getSheets();
XSpreadsheet xSheet = (XSpreadsheet)sheets.getByName("Sheet1").Value;
 
//行オブジェクト取得
XColumnRowRange xCRRange = (XColumnRowRange)sheet;
XTableRows xRows = xCRRange.getRows();
 
//行挿入(5行目から3行挿入する)
xRows.insertByIndex(5, 3);
 
 
//行削除(10行目から2行削除する)
xRows.removeByIndex(10, 2);

insertByIndex,removeByIndex の行インデックスは0から始まっていることに注意です。
by jehoshaphat | 2010-09-23 03:16 | .Net開発


<< Hyper-V上でドメインコン... (Solaris)TFTPによ... >>