Pongeponge

C#でPDFする前にヘローワールド

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はハンドルされませんでした。

 

f:id:pongeponge:20130510014936j:plain

 正直何が悪いのかよくわからんかった。

表1の所を無題1にしてみたりしても、同じエラーが出る。

しばらくもにゅもにゅしてOpenOffice APIとかでググったりしてたら、本家ではこうなってた。

 

XSpreadsheet sheet = (XSpreadsheet)sheets.getByName("sheet1").Value;

 

 変えて動かしてみたらすんなり動いて

f:id:pongeponge:20130510023518p:plain

できたー。