Вставка листов в электронную таблицу через c#

Я создал проект, который читает разные файлы, а затем помещает в разные листы с электронной таблицей. Я использовал электронную таблицу 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);

однако моя проблема в том, что файл пуст.ods необходимо настроить с количеством листов, которые будут необходимы уже вставлены в электронная таблица перед запуском приложения. Это не идеально, так как количество необходимых листов не всегда известно. Есть ли способ вставить листы из моего приложения?

любая помощь будет оценили.

1 ответов


Я просто взглянул на API OpenOffice и нашел это: 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

... и так далее.

Я ни в коем случае не эксперт по API OpenOffice - я просто кратко ознакомился с их документацией 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