Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2009, 22:50   #1
kven
Новичок
Джуниор
 
Регистрация: 28.07.2009
Сообщений: 2
По умолчанию OpenOffice writer table in C#

Может кто то подскажет как создавать и обрабатывать таблицы в OpenOffice?
Ниже код который есть на данный момент. Работает открытие документа, вставка текста, замена текста. Нужно создать таблицу или обработать существубщюю таблицу в документе OpenOffice


PHP код:
// устанавливаю имя открываемого файла
DirectoryInfo dir1 = new DirectoryInfo(".");
            
string stttr;
            
stttr dir1.FullName "\\sample\\Акт уценки.odt";
            
//Вызов метода bootstrap для получения нового объекта
            //ComponentContext. Если OpenOffice еще не запущен то
            //запустим его и затем возвратим ComponentContext.
            
unoidl.com.sun.star.uno.XComponentContext localContext =
            
uno.util.Bootstrap.bootstrap();

            
//Получение нового диспетчера служб типа MultiServiceFactory,
            //мы нуждаемся в нем, чтобы получить объект desktop и создать
            //новый объект CLI.
            
unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory =(unoidl.com.sun.star.lang.XMultiServiceFactorylocalContext.getServiceManager();
            
//Создание нового экземпляра Desktop используя наш диспетчер служб
            //Заметьте: мы передаем наш объект desktop загрузчику XComponent
            //так, чтобы мы могли загрузить или создать новые документы.
            
XComponentLoader componentLoader =
            (
XComponentLoader)multiServiceFactory.createInstance(
            
"com.sun.star.frame.Desktop");
            
//Открытие документа writer используя наш объект
            //загрузки компонентов.
            //((XLoadable)xComponent).load(PathConverter(stttr),new unoidl.com.sun.star.beans.PropertyValue[0]);
            
XComponent xComponent componentLoader.loadComponentFromURL(
            
PathConverter(stttr), 
            
"_blanc"0,  
                
//без дополнительных аргументов.
            
new unoidl.com.sun.star.beans.PropertyValue[0]
            );
            
//установка позиции в конец документа
            
unoidl.com.sun.star.text.XTextRange Xrange = ((unoidl.com.sun.star.text.XTextDocument)xComponent).
            
getText().getEnd();
             
// вставка строки
            
((unoidl.com.sun.star.text.XTextDocument)xComponent).
            
getText().insertString(Xrange"Привет! Я - первый текст."false);
             
            
// создание обїекта для замені текста
            
unoidl.com.sun.star.util.XReplaceable xReplaceable;
            
xReplaceable xComponent as unoidl.com.sun.star.util.XReplaceable;
            
unoidl.com.sun.star.util.XReplaceDescriptor xRepDesc xReplaceable.createReplaceDescriptor();
            
// set a string to search for
            
xRepDesc.setSearchString("_num_");
            
// set the string to be inserted
            
xRepDesc.setReplaceString("5434555");
            
long nResult xReplaceable.replaceAll(xRepDesc);
            
// создаём обобъект таблици правильность кода неизвестна, но компилируется
            
unoidl.com.sun.star.text.XTextTable table;
// 
            
table multiServiceFactory.createInstance("unoidl.com.sun.star.text.XTextTable") as unoidl.com.sun.star.text.XTextTable;
            
table xComponent as unoidl.com.sun.star.text.XTextTable;

// после проделанных действий объект table остаётся null ссылка на объект не создаётся
// это основная проблема
            
            
            //table.initialize(4, 5);
            
           
  //После того, вносили изменения, мы передаем наш компонент
  //XStorable для сохранения его на жестком диске
            //ODT
  
       
            
((XStorable)xComponent).storeToURL(
   
//Преобразование пути к файлу в формат OpenOffice
   
PathConverter(stttr),
   
//без дополнительных аргументов
   
new unoidl.com.sun.star.beans.PropertyValue[0]);
  
//Console.WriteLine("Your first OpenOffice document is saved!");
  //Console.ReadLine();
 
}

        } 

при создании объекта table не создаётся ссылка на объект. Или возможно я не правильно его создаю. Подскажите как объекту table задать ссылку на объект. Все классы таблиц CLI сборок являются абстрактными, получение таблицы сылки через XComponent не получается. Поскажите варианты.
kven вне форума Ответить с цитированием
Старый 28.07.2009, 22:59   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Нашел кое-что по вашей проблеме в гугле.
Ссылка 1(Английский язык)
Ссылка 2(Английский язык)
Ссылка 3(Английский язык)
MaTBeu вне форума Ответить с цитированием
Старый 28.07.2009, 23:12   #3
kven
Новичок
Джуниор
 
Регистрация: 28.07.2009
Сообщений: 2
По умолчанию

Спасибо, все эти ссылки были рассмотрены уже ранее, сейчас проблема заключается в том что бы объект table был не пустым.

Код:
unoidl.com.sun.star.text.XTextTable table; 
            table = multiServiceFactory.createInstance("unoidl.com.sun.star.text.XTextTable") as unoidl.com.sun.star.text.XTextTable;
после выполнения этих строк объект равен null, и ничего пока исправить не получается
kven вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ECLIPSE и электронные таблицы(Excel , OpenOffice.org Calc) Rashidishe Общие вопросы по Java, Java SE, Kotlin 0 23.03.2009 17:50
как открыть в делфи OpenOffice???? Gumaris Общие вопросы Delphi 2 06.12.2007 21:59
OpenOffice MAcK Общие вопросы Delphi 19 12.10.2007 21:28