Вставка листов в электронную таблицу через 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