OpenOfficeを立ち上げてハローワールド書いてみようとした。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using uno.util;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.frame;
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;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//OpenOffice立ち上げっぽい
XComponentContext LContext = uno.util.Bootstrap.bootstrap();
//ここらへん不明
XMultiServiceFactory MSFactoty = (XMultiServiceFactory)LContext.getServiceManager();
XComponentLoader Cloader = (XComponentLoader)MSFactoty.createInstance("com.sun.star.frame.Desktop");
//コンポーネント作成?
XComponent component = Cloader.loadComponentFromURL("private:factory/scalc", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]);
XSpreadsheetDocument spredsheetDocument = (XSpreadsheetDocument)component;
//シートの取得
XSpreadsheets sheets = spredsheetDocument.getSheets();
XSpreadsheet sheet = (XSpreadsheet)sheets.getByName("表1").Value;
//セルに出力
sheet.getCellByPosition(0, 0).setFormula("Hello World!");
}
}
}
こう書いて実行するとこんな文句を言われる。
XSpreadsheet sheet = (XSpreadsheet)sheets.getByName("表1").Value;
NoSuchElementExceptionはハンドルされませんでした。
正直何が悪いのかよくわからんかった。
表1の所を無題1にしてみたりしても、同じエラーが出る。
しばらくもにゅもにゅしてOpenOffice APIとかでググったりしてたら、本家ではこうなってた。
XSpreadsheet sheet = (XSpreadsheet)sheets.getByName("sheet1").Value;
変えて動かしてみたらすんなり動いて
できたー。