开放式办公室sdk用Java创建xls,doc,ppt文件

时间:2018-04-23 14:49:48

标签: java openoffice.org openoffice-calc openoffice-writer openoffice-basic

如何使用开放式办公室sdk创建xls文件?请给出Java示例源代码。还需要创建word和power point文件。我无法得到任何例子

以下是我试过的代码。它试图在Open office App中打开,我不想要。我想使用Java在AIX环境下的WebSphere App Server中生成.ods文件。我正在使用它来生成报告并将其下载到前端(Web应用程序)。

import ooo.connector.BootstrapSocketConnector;

import com.sun.star.beans.PropertyValue;
import com.sun.star.comp.helper.BootstrapException;
import com.sun.star.container.XIndexAccess;
import com.sun.star.frame.XComponentLoader;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.sheet.XSpreadsheet;
import com.sun.star.sheet.XSpreadsheetDocument;
import com.sun.star.sheet.XSpreadsheets;
import com.sun.star.table.XCell;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {

    XComponentContext xContext = null;

    // get the remote office component context
    try {
        String folder = "C:\\Program Files (x86)\\OpenOffice 4\\program";
        xContext = BootstrapSocketConnector.bootstrap(folder);
    } catch (BootstrapException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    XSpreadsheetDocument myDoc = null;

    System.out.println("Opening an empty Calc document");
    myDoc = openCalc(xContext);

    XSpreadsheet xSheet = null;

    try {
        System.out.println("Getting spreadsheet");
        XSpreadsheets xSheets = myDoc.getSheets();
        XIndexAccess oIndexSheets = (XIndexAccess) UnoRuntime
                .queryInterface(XIndexAccess.class, xSheets);
        xSheet = (XSpreadsheet) UnoRuntime.queryInterface(
                XSpreadsheet.class, oIndexSheets.getByIndex(0));
    } catch (Exception e) {
        System.out.println("Couldn't get Sheet " + e);
        e.printStackTrace(System.err);
    }

System.out.println("Creating the Header") ;

    insertIntoCell(1,0,"JAN",xSheet,"");
    insertIntoCell(2,0,"FEB",xSheet,"");
    insertIntoCell(3,0,"MAR",xSheet,"");
    insertIntoCell(4,0,"APR",xSheet,"");
    insertIntoCell(5,0,"MAI",xSheet,"");
    insertIntoCell(6,0,"JUN",xSheet,"");
    insertIntoCell(7,0,"JUL",xSheet,"");
    insertIntoCell(8,0,"AUG",xSheet,"");
    insertIntoCell(9,0,"SEP",xSheet,"");
    insertIntoCell(10,0,"OCT",xSheet,"");
    insertIntoCell(11,0,"NOV",xSheet,"");
    insertIntoCell(12,0,"DEC",xSheet,"");
    insertIntoCell(13,0,"SUM",xSheet,"");


    System.out.println("Fill the lines");

    insertIntoCell(0,1,"Smith",xSheet,"");
    insertIntoCell(1,1,"42",xSheet,"V");
    insertIntoCell(2,1,"58.9",xSheet,"V");
    insertIntoCell(3,1,"-66.5",xSheet,"V");
    insertIntoCell(4,1,"43.4",xSheet,"V");
    insertIntoCell(5,1,"44.5",xSheet,"V");
    insertIntoCell(6,1,"45.3",xSheet,"V");
    insertIntoCell(7,1,"-67.3",xSheet,"V");
    insertIntoCell(8,1,"30.5",xSheet,"V");
    insertIntoCell(9,1,"23.2",xSheet,"V");
    insertIntoCell(10,1,"-97.3",xSheet,"V");
    insertIntoCell(11,1,"22.4",xSheet,"V");
    insertIntoCell(12,1,"23.5",xSheet,"V");
    insertIntoCell(13,1,"=SUM(B2:M2)",xSheet,"");


    insertIntoCell(0,2,"Jones",xSheet,"");
    insertIntoCell(1,2,"21",xSheet,"V");
    insertIntoCell(2,2,"40.9",xSheet,"V");
    insertIntoCell(3,2,"-57.5",xSheet,"V");
    insertIntoCell(4,2,"-23.4",xSheet,"V");
    insertIntoCell(5,2,"34.5",xSheet,"V");
    insertIntoCell(6,2,"59.3",xSheet,"V");
    insertIntoCell(7,2,"27.3",xSheet,"V");
    insertIntoCell(8,2,"-38.5",xSheet,"V");
    insertIntoCell(9,2,"43.2",xSheet,"V");
    insertIntoCell(10,2,"57.3",xSheet,"V");
    insertIntoCell(11,2,"25.4",xSheet,"V");
    insertIntoCell(12,2,"28.5",xSheet,"V");
    insertIntoCell(13,2,"=SUM(B3:M3)",xSheet,"");

    insertIntoCell(0,3,"Brown",xSheet,"");
    insertIntoCell(1,3,"31.45",xSheet,"V");
    insertIntoCell(2,3,"-20.9",xSheet,"V");
    insertIntoCell(3,3,"-117.5",xSheet,"V");
    insertIntoCell(4,3,"23.4",xSheet,"V");
    insertIntoCell(5,3,"-114.5",xSheet,"V");
    insertIntoCell(6,3,"115.3",xSheet,"V");
    insertIntoCell(7,3,"-171.3",xSheet,"V");
    insertIntoCell(8,3,"89.5",xSheet,"V");
    insertIntoCell(9,3,"41.2",xSheet,"V");
    insertIntoCell(10,3,"71.3",xSheet,"V");
    insertIntoCell(11,3,"25.4",xSheet,"V");
    insertIntoCell(12,3,"38.5",xSheet,"V");
    insertIntoCell(13,3,"=SUM(A4:L4)",xSheet,"");

}

public static void insertIntoCell(int CellX, int CellY, String theValue,
        XSpreadsheet TT1, String flag) {
    XCell xCell = null;

    try {
        xCell = TT1.getCellByPosition(CellX, CellY);
    } catch (com.sun.star.lang.IndexOutOfBoundsException ex) {
        System.err.println("Could not get Cell");
        ex.printStackTrace(System.err);
    }

    if (flag.equals("V")) {
        xCell.setValue((new Float(theValue)).floatValue());
    } else {
        xCell.setFormula(theValue);
    }

}

public static XSpreadsheetDocument openCalc(XComponentContext xContext) {
    // define variables
    XMultiComponentFactory xMCF = null;
    XComponentLoader xCLoader;
    XSpreadsheetDocument xSpreadSheetDoc = null;
    XComponent xComp = null;

    try {
        // get the servie manager rom the office
        xMCF = xContext.getServiceManager();

        // create a new instance of the the desktop
        Object oDesktop = xMCF.createInstanceWithContext(
                "com.sun.star.frame.Desktop", xContext);

        // query the desktop object for the XComponentLoader
        xCLoader = (XComponentLoader) UnoRuntime.queryInterface(
                XComponentLoader.class, oDesktop);

        PropertyValue[] szEmptyArgs = new PropertyValue[0];
        String strDoc = "private:factory/scalc";

        xComp = xCLoader.loadComponentFromURL(strDoc, "_blank", 0,
                szEmptyArgs);
        xSpreadSheetDoc = (XSpreadsheetDocument) UnoRuntime.queryInterface(
                XSpreadsheetDocument.class, xComp);

    } catch (Exception e) {
        System.err.println(" Exception " + e);
        e.printStackTrace(System.err);
    }

    return xSpreadSheetDoc;
}

}

0 个答案:

没有答案