Applications can call various MS Excel functions through standard technique called OLE, to prove that it is possible to replace MS Excel with LibreOffice in context of applications using OLE Excel interface it is required to develop a proof-of-concept.
Functionality. POC has to:
1. Be an OLE service in Windows XP or Windows 7.
2. Be registered in OS as «[url removed, login to view]».
3. Provide OLE MS Excel 2007/2010 interface in boundaries required to work to the VBS-script provided in Appendix.
4. OLE Excel requests has to be translated to equivalent API calls of LibreOffice UNO API: VB-script → POC OLE server → LibreOffice UNO API.
5. Results of OLE calls (statues codes, returning data if there are any), has to be passed back to VBS script, as it native OLE Excel does.
Additional requirements. POC:
1. Can be written on any programming language, but must not require any of licensed run-time library.
2. Has to work in Windows XP Prof SP3 x32/x64, Windows 7 Prof x32/x64.
3. Version of LibreOffice > 188.8.131.52 or newer.
Functionality check. On a computer, where MS Office (MS Excel) has never been installed we install LibreOffice. We install and register POC OLE server (can be done manually following instructions from a developer). Run LibreOffice as UNO server. Run test script. Script has to open LibreOffice Calc, create new spreadsheet file and in the first row, third column it has to insert test string 'Test', or any other value we setup in our test script.
1. LibreOffice UNO API [url removed, login to view]
Appendix. Test script:
Private Sub cmdExcel_Click()
intCol = 3
intRow = 1
'Load Excel and create the object
Set oXL = CreateObject("[url removed, login to view]")
'Turn off alert messages.
[url removed, login to view] = False
'Load a new workbook and create the workbook object.
Set oBook = [url removed, login to view]
'Create the worksheet object.
Set oSheet = [url removed, login to view](1)
'Enter a value in a cell.
[url removed, login to view](intRow, intCol).Value = "Test"
'Display the Excel session.
[url removed, login to view] = True