Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9366

LibreOffice CalcをJScriptなどから操作してみた

$
0
0

はじめに

を参考にさせて頂きました。圧倒的感謝……!

環境

  • Windows 10 Home (64bit)
  • Visual Studio Community 2019

サンプルソース

JScript

libreoffice.js
{varfactory=WScript.CreateObject("com.sun.star.ServiceManager");varloader=factory.createInstance("com.sun.star.frame.Desktop");vardoc=loader.loadComponentFromURL("file:///C:/data/test.ods","_blank",0,[]);varsheets=doc.getSheets();varsheet=sheets.getByName("Sheet1");varcell=sheet.getCellByPosition(0,0);cell.setFormula("hello, world");}

VB.NET

Module1.vb
Module Module1

    Sub Main()
        Dim factory, loader, doc As Object
        Dim d(0) As Object

        factory = CreateObject("com.sun.star.ServiceManager")
        loader = factory.createInstance("com.sun.star.frame.Desktop")
        doc = loader.loadComponentFromURL("private:factory/scalc", "_blank", 0, d)

        Dim sheets, sheet, cell As Object
        sheets = doc.getSheets()
        sheet = sheets.getByName("Sheet1")
        cell = sheet.getCellByPosition(1, 1)
        cell.setFormula("hello, world")
    End Sub

End Module

C#

LibreOffice SDKを使う方法もあるが、使わない方法もある。

Program.cs
usingSystem;usingSystem.Reflection;usingSystem.Runtime.InteropServices;namespaceConsoleApp1{classProgram{staticvoidMain(string[]args){vart=Type.GetTypeFromProgID("com.sun.star.ServiceManager");varfactory=Activator.CreateInstance(t);object[]a={"com.sun.star.frame.Desktop"};varloader=factory.GetType().InvokeMember("createInstance",BindingFlags.InvokeMethod,null,factory,a);object[]b={};object[]c={"private:factory/scalc","_blank",0,b};vardoc=loader.GetType().InvokeMember("loadComponentFromURL",BindingFlags.InvokeMethod,null,loader,c);Marshal.ReleaseComObject(factory);}}}

Viewing all articles
Browse latest Browse all 9366

Latest Images

Trending Articles