我创建了一个项目,它读取不同的文件,然后使用电子表格放入不同的工作表。 我使用了Open office calc电子表格,因此使用以下代码打开一个空白文件:
public XSpreadsheet getSpreadsheet(int nIndex, XComponent xComp)
{
XSpreadsheets xSheets = ((XSpreadsheetDocument)xComp).getSheets();
XIndexAccess xSheetsIA = (XIndexAccess)xSheets;
XSpreadsheet xSheet =(XSpreadsheet)xSheetsIA.getByIndex(nIndex).Value;
return xSheet;
}
我打电话给表格就像这样:
XSpreadsheet newSheet = getSpreadsheet(sheetIndex, xComp);
其中xComp
是:
string filePathway = @"file:///c:/temp/blank.ods";
PropertyValue[] propVals = new PropertyValue[0];
XComponent oCalcuDoc = oDesktop.loadComponentFromURL(filePathway, "_blank", 0, propVals);
但是我的问题是需要使用在运行应用程序之前已经插入电子表格中所需的页数来设置文件blank.ods。这并不理想,因为并不总是知道所需的纸张数量。有没有办法从我的应用程序中插入工作表?
任何帮助都将不胜感激。
答案 0 :(得分:7)
我刚刚看了一下OpenOffice API,发现了这个:http://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XSpreadsheets.html
..它声明接口XSpreadsheets
:
提供了按名称访问电子表格以及插入,复制,删除和重新排列电子表格的方法。
它包括以下方法:
insertNewByName
,根据API文档:
将新工作表插入集合中。
请参阅:http://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XSpreadsheets.html#insertNewByName
......等等。
我绝不是OpenOffice API专家 - 我只是简要介绍了他们的API文档 - 希望这可以为您指明正确的方向。
实际上,该文档包含如何在文档中添加新工作表的示例:
/** Inserts a new empty spreadsheet with the specified name.
@param xDocument The XSpreadsheetDocument interface of the document.
@param aName The name of the new sheet.
@param nIndex The insertion index.
@return The XSpreadsheet interface of the new sheet.
*/
public com.sun.star.sheet.XSpreadsheet insertSpreadsheet(
com.sun.star.sheet.XSpreadsheetDocument xDocument,
String aName, short nIndex ) {
// Collection of sheets
com.sun.star.sheet.XSpreadsheets xSheets = xDocument.getSheets();
com.sun.star.sheet.XSpreadsheet xSheet = null;
try {
xSheets.insertNewByName(aName, nIndex);
xSheet = xSheets.getByName( aName );
} catch (Exception ex) {
}
return xSheet;
}
该示例可以在本页底部看到:http://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Working_With_Spreadsheet_Documents