Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как работать под Office XP на C#?

10K
06 февраля 2006 года
angor
10 / / 06.10.2005
People,could u help me? i have been working on Visual .NET 2003, C#, with Excel 2003 and wanna do the same with Excel 2002. how is it possible?what is the difference?
Спасибо!!!
272
07 февраля 2006 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by angor
People,could u help me? i have been working on Visual .NET 2003, C#, with Excel 2003 and wanna do the same with Excel 2002. how is it possible?what is the difference?
Спасибо!!!


Либо через OLE либо, либо поставь себе VS 2005 там в комплекте есть тулы для того, чтобы можно было легко программить под офис.

273
07 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Цитата:
Originally posted by vladsoft
Либо через OLE либо, либо поставь себе VS 2005 там в комплекте есть тулы для того, чтобы можно было легко программить под офис.

Да, в действительности делать писанину на C# для создания офисны приложений для OfficeXP получится только через COM и OLE.

10K
07 февраля 2006 года
angor
10 / / 06.10.2005
Цитата:
Originally posted by 3A3-968M
Да, в действительности делать писанину на C# для создания офисны приложений для OfficeXP получится только через COM и OLE.


я скачал пакет Офис XP, распаковал скажем в какую-то директорию, а дальше что? я же вижу COM 2003 офиса. как выбрать нужный?еще аналогичный вопрос по офису 2000...
еще вопрос такой. Работтаю с екселевским док-том,
private void FillDocument(){

xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.Visible=false;
xlApp.UserControl=false;
....
xlApp.Quit();
}

однако по выходе из функции процесс процесс Excel не вырубается, и если вызвать функцию 5 раз, соответственно на время выполнения программы будет в памяти 5 экселей. как закрыть этот эксель?..

спасибо заранее

8.2K
08 февраля 2006 года
Track
44 / / 30.05.2005
Цитата:
Originally posted by angor
People,could u help me? i have been working on Visual .NET 2003, C#, with Excel 2003 and wanna do the same with Excel 2002. how is it possible?what is the difference?
Спасибо!!!



Есть другой путь, который является рекомеднованным Microsoft Office Team'ом (по долгу службы знаю такие подробности :}).

Это DAO PIAs, т.н. Primary Interop Assemblies. В двух словах это мэнэджед обертки для работы с офисными приложениями. Мне приходилось работать только с БД Access, но они тянут весь Office.

Скачать их можно с http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/odc_oxppias.asp
Там же можно и прочитать полее подробно.

В двух словах. Надо распаковать архив в любую папку и оттуда запустить register.bat. Он использует gacutil.exe, его надо скопировать сюда же или прописать в системе к нему path.

После этого в проекте надо добавить референс на Microsoft DAO 3.6 Object Library с закладки COM.

В коде прописываем using dao. Это namespace с набором классов, которые дают удобный доступ ко многим функциям нижнего уровня.

Я к сожалению, работал опять же тока с Access, потому приведу пример кода, который печатает список таблиц и лежащих под ними индексов.

Код:
using System;
using System.Collections.Generic;
using System.Text;
using dao;

namespace Sample
{
    class Program
    {
        const string xSysPrefix = "MSys";

        static void Main(string[] args)
        {
            DBEngineClass engineClass = new DBEngineClass();
            Workspace workSpace = engineClass.CreateWorkspace("WorkSpace", "Admin", "", WorkspaceTypeEnum.dbUseJet);
            Database db = workSpace.OpenDatabase(@"D:\Utils\RowsetViewer\Northwind.mdb", null, true, null);

            foreach (TableDef tds in db.TableDefs)
            {
                Console.WriteLine(tds.Name);
                Console.WriteLine("------");

                if (tds.Name.Substring(0, xSysPrefix.Length) != xSysPrefix)
                {
                    foreach (Index ind in tds.Indexes)
                    {
                        Console.WriteLine("index=" + ind.Name);
                    }
                    Console.WriteLine("");
                }
            }

            Console.WriteLine("done");
            Console.ReadKey();
        }
    }
}
10K
08 февраля 2006 года
angor
10 / / 06.10.2005
Уважаемый Track, не могли бы проконсультировать насчет того, каким образом можно работать в .NEt 2003 с Office 2000, или это возможно вообще в принципе.
Спасибо
8.3K
08 февраля 2006 года
banshee
40 / / 25.11.2005
Совсем недавно решал такую же задачу :) Мне помогла статья на RSDN:

http://www.rsdn.ru/article/dotnet/ComCollectionsNet.xml

Надеюсь, что помог...
8.2K
09 февраля 2006 года
Track
44 / / 30.05.2005
Цитата:
Originally posted by angor
Уважаемый Track, не могли бы проконсультировать насчет того, каким образом можно работать в .NEt 2003 с Office 2000, или это возможно вообще в принципе.
Спасибо



К сожалению, с Office 2000 из .NET работать не приходилось. Единственное, что я могу сказать, что Office PIAs вроде являются обратно совместимыми, но это достоверно на уровне работы с документами Office, а вот как насчет "подергать" сами Office-приложения, тут я помочь не могу. Опять же, подробно про это (немного другой подход) посмотри, что написал banshee.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог