1*d71964d5SAndrew Rist// ************************************************************* 2*d71964d5SAndrew Rist// 3*d71964d5SAndrew Rist// Licensed to the Apache Software Foundation (ASF) under one 4*d71964d5SAndrew Rist// or more contributor license agreements. See the NOTICE file 5*d71964d5SAndrew Rist// distributed with this work for additional information 6*d71964d5SAndrew Rist// regarding copyright ownership. The ASF licenses this file 7*d71964d5SAndrew Rist// to you under the Apache License, Version 2.0 (the 8*d71964d5SAndrew Rist// "License"); you may not use this file except in compliance 9*d71964d5SAndrew Rist// with the License. You may obtain a copy of the License at 10*d71964d5SAndrew Rist// 11*d71964d5SAndrew Rist// http://www.apache.org/licenses/LICENSE-2.0 12*d71964d5SAndrew Rist// 13*d71964d5SAndrew Rist// Unless required by applicable law or agreed to in writing, 14*d71964d5SAndrew Rist// software distributed under the License is distributed on an 15*d71964d5SAndrew Rist// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*d71964d5SAndrew Rist// KIND, either express or implied. See the License for the 17*d71964d5SAndrew Rist// specific language governing permissions and limitations 18*d71964d5SAndrew Rist// under the License. 19*d71964d5SAndrew Rist// 20*d71964d5SAndrew Rist// ************************************************************* 21cdf0e10cSrcweir// When this script is run on an existing, saved, spreadsheet, 22cdf0e10cSrcweir// eg. /home/testuser/myspreadsheet.sxc, the script will export 23cdf0e10cSrcweir// each sheet to a separate html file, 24cdf0e10cSrcweir// eg. /home/testuser/myspreadsheet_sheet1.html, 25cdf0e10cSrcweir// /home/testuser/myspreadsheet_sheet2.html etc 26cdf0e10cSrcweirimportClass(Packages.com.sun.star.uno.UnoRuntime); 27cdf0e10cSrcweirimportClass(Packages.com.sun.star.sheet.XSpreadsheetDocument); 28cdf0e10cSrcweirimportClass(Packages.com.sun.star.container.XIndexAccess); 29cdf0e10cSrcweirimportClass(Packages.com.sun.star.beans.XPropertySet); 30cdf0e10cSrcweirimportClass(Packages.com.sun.star.beans.PropertyValue); 31cdf0e10cSrcweirimportClass(Packages.com.sun.star.util.XModifiable); 32cdf0e10cSrcweirimportClass(Packages.com.sun.star.frame.XStorable); 33cdf0e10cSrcweirimportClass(Packages.com.sun.star.frame.XModel); 34cdf0e10cSrcweirimportClass(Packages.com.sun.star.uno.AnyConverter); 35cdf0e10cSrcweirimportClass(Packages.com.sun.star.uno.Type); 36cdf0e10cSrcweir 37cdf0e10cSrcweirimportClass(java.lang.System); 38cdf0e10cSrcweir 39cdf0e10cSrcweir//get the document object from the scripting context 40cdf0e10cSrcweiroDoc = XSCRIPTCONTEXT.getDocument(); 41cdf0e10cSrcweir//get the XSpreadsheetDocument interface from the document 42cdf0e10cSrcweirxSDoc = UnoRuntime.queryInterface(XSpreadsheetDocument, oDoc); 43cdf0e10cSrcweir//get the XModel interface from the document 44cdf0e10cSrcweirxModel = UnoRuntime.queryInterface(XModel,oDoc); 45cdf0e10cSrcweir//get the XIndexAccess interface used to access each sheet 46cdf0e10cSrcweirxSheetsIndexAccess = UnoRuntime.queryInterface(XIndexAccess, xSDoc.getSheets()); 47cdf0e10cSrcweir//get the XStorable interface used to save the document 48cdf0e10cSrcweirxStorable = UnoRuntime.queryInterface(XStorable,xSDoc); 49cdf0e10cSrcweir//get the XModifiable interface used to indicate if the document has been 50cdf0e10cSrcweir//changed 51cdf0e10cSrcweirxModifiable = UnoRuntime.queryInterface(XModifiable,xSDoc); 52cdf0e10cSrcweir 53cdf0e10cSrcweir//set up an array of PropertyValue objects used to save each sheet in the 54cdf0e10cSrcweir//document 55cdf0e10cSrcweirstoreProps = new Array;//PropertyValue[1]; 56cdf0e10cSrcweirstoreProps[0] = new PropertyValue(); 57cdf0e10cSrcweirstoreProps[0].Name = "FilterName"; 58cdf0e10cSrcweirstoreProps[0].Value = "HTML (StarCalc)"; 59cdf0e10cSrcweirstoreUrl = xModel.getURL(); 60cdf0e10cSrcweirstoreUrl = storeUrl.substring(0,storeUrl.lastIndexOf('.')); 61cdf0e10cSrcweir 62cdf0e10cSrcweir//set only one sheet visible, and store to HTML doc 63cdf0e10cSrcweirfor(var i=0;i<xSheetsIndexAccess.getCount();i++) 64cdf0e10cSrcweir{ 65cdf0e10cSrcweir setAllButOneHidden(xSheetsIndexAccess,i); 66cdf0e10cSrcweir xModifiable.setModified(false); 67cdf0e10cSrcweir xStorable.storeToURL(storeUrl+"_sheet"+(i+1)+".html", storeProps); 68cdf0e10cSrcweir} 69cdf0e10cSrcweir 70cdf0e10cSrcweir// now set all visible again 71cdf0e10cSrcweirfor(var i=0;i<xSheetsIndexAccess.getCount();i++) 72cdf0e10cSrcweir{ 73cdf0e10cSrcweir xPropSet = AnyConverter.toObject( new Type(XPropertySet), xSheetsIndexAccess.getByIndex(i)); 74cdf0e10cSrcweir xPropSet.setPropertyValue("IsVisible", true); 75cdf0e10cSrcweir} 76cdf0e10cSrcweir 77cdf0e10cSrcweirfunction setAllButOneHidden(xSheetsIndexAccess,vis) { 78cdf0e10cSrcweir //System.err.println("count="+xSheetsIndexAccess.getCount()); 79cdf0e10cSrcweir //get an XPropertySet interface for the vis-th sheet 80cdf0e10cSrcweir xPropSet = AnyConverter.toObject( new Type(XPropertySet), xSheetsIndexAccess.getByIndex(vis)); 81cdf0e10cSrcweir //set the vis-th sheet to be visible 82cdf0e10cSrcweir xPropSet.setPropertyValue("IsVisible", true); 83cdf0e10cSrcweir // set all other sheets to be invisible 84cdf0e10cSrcweir for(var i=0;i<xSheetsIndexAccess.getCount();i++) 85cdf0e10cSrcweir { 86cdf0e10cSrcweir xPropSet = AnyConverter.toObject( new Type(XPropertySet), xSheetsIndexAccess.getByIndex(i)); 87cdf0e10cSrcweir if(i!=vis) { 88cdf0e10cSrcweir xPropSet.setPropertyValue("IsVisible", false); 89cdf0e10cSrcweir } 90cdf0e10cSrcweir } 91cdf0e10cSrcweir} 92