Добавление листа в Excel
От: ssa71 Россия  
Дата: 05.01.04 16:53
Оценка:
Доброго время суток.
Как программного добавить новый лист в Excel на С#. Пытаюсь так:
Excel.Application ExeApp;
Excel.Workbook MyWb;

try
{
ExeApp=(Excel.Application)Marshal.GetActiveObject("Excel.Application");
}
catch
{
ExeApp =new Excel.Application();
}
try
{

MyWb = ExeApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
MyWb.Worksheets.Add(MyWb.Worksheets[MyWb.Worksheets.Count],0,1,XlWBATemplate.xlWBATWorksheet);
ExeApp.Visible = true;
}
catch (Exception exc)
{
MessageBox.Show(exc.Message,"");
}
не проходит. Что ставить вместо After и Before??
Re: Добавление листа в Excel
От: Elena_ Россия  
Дата: 05.01.04 22:39
Оценка:
Здравствуйте, ssa71, Вы писали:

S>Доброго время суток.

S>Как программного добавить новый лист в Excel на С#. Пытаюсь так:
S>Excel.Application ExeApp;
S> Excel.Workbook MyWb;

S> try

S> {
S> ExeApp=(Excel.Application)Marshal.GetActiveObject("Excel.Application");
S> }
S> catch
S> {
S> ExeApp =new Excel.Application();
S> }
S> try
S> {

S> MyWb = ExeApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

S> MyWb.Worksheets.Add(MyWb.Worksheets[MyWb.Worksheets.Count],0,1,XlWBATemplate.xlWBATWorksheet);
S> ExeApp.Visible = true;
S> }
S> catch (Exception exc)
S> {
S> MessageBox.Show(exc.Message,"");
S> }
S>не проходит. Что ставить вместо After и Before??

По-видимому, не проходит After = 0 (и вообще, по-моему, нельзя указывать и Before и After, даже ненулевые)

У меня на VB.Net работает так


        Dim appExcel As New Excel.Application()
        Dim wkb As Excel.Workbook
        wkb = appExcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet)

        wkb.Worksheets.Add(wkb.Worksheets(wkb.Worksheets.Count))

 '       или

        wkb.Worksheets.Add(wkb.Worksheets(wkb.Worksheets.Count), , 1, Excel.XlWBATemplate.xlWBATWorksheet)

        appExcel.Visible = True
Пользователь — друг программиста!
Re[2]: Добавление листа в Excel
От: ssa71 Россия  
Дата: 06.01.04 07:34
Оценка:
Здравствуйте, Elena_, Вы писали:


E_>По-видимому, не проходит After = 0 (и вообще, по-моему, нельзя указывать и Before и After, даже ненулевые)


E_>У меня на VB.Net работает так



E_>
E_>        Dim appExcel As New Excel.Application()
E_>        Dim wkb As Excel.Workbook
E_>        wkb = appExcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet)

E_>        wkb.Worksheets.Add(wkb.Worksheets(wkb.Worksheets.Count))

E_> '       или

E_>        wkb.Worksheets.Add(wkb.Worksheets(wkb.Worksheets.Count), , 1, Excel.XlWBATemplate.xlWBATWorksheet)

E_>        appExcel.Visible = True
E_>



На VB.Net все понятно. Там параметры after и before необязательные, а C# обязательные типа object. Когда указываю в качестве after и before значение MyWb.Worksheets[MyWb.Worksheets.Count] ругается.
Re[3]: Добавление листа в Excel
От: Elena_ Россия  
Дата: 06.01.04 07:52
Оценка:
Здравствуйте, ssa71, Вы писали:

S>На VB.Net все понятно. Там параметры after и before необязательные, а C# обязательные типа object. Когда указываю в качестве after и before значение MyWb.Worksheets[MyWb.Worksheets.Count] ругается.



Я сама не пробовала, но в MSDN предлагается для C# (HOW TO: Run Office Macros Using Automation From Visual C# .NET)


// Object for missing (or optional) arguments.
object oMissing = System.Reflection.Missing.Value;


и потом

Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.Visible = true;
Excel.Workbooks oBooks = oExcel.Workbooks;
Excel._Workbook oBook = null;

//EXCEL9:
oBook = oBooks.Open("c:\\book1.xls", oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
                oMissing, oMissing, oMissing);


То есть вместо After = 0, наверное, надо поставить oMissing
Пользователь — друг программиста!
Re[4]: Добавление листа в Excel
От: Ransom Stark Россия  
Дата: 06.01.04 08:14
Оценка:
E_>
E_>// Object for missing (or optional) arguments.
E_>object oMissing = System.Reflection.Missing.Value;
E_>

Type.Missing?
Re[5]: Добавление листа в Excel
От: Elena_ Россия  
Дата: 06.01.04 11:32
Оценка:
Здравствуйте, Ransom Stark, Вы писали:

E_>>
E_>>// Object for missing (or optional) arguments.
E_>>object oMissing = System.Reflection.Missing.Value;
E_>>

RS>Type.Missing?

Missing Class — Represents a missing Object. This class cannot be inherited.

Namespace: System.Reflection

Assembly: Mscorlib (in Mscorlib.dll)
Language
C# C++ JScript Visual Basic

Missing is used to invoke a method with a default argument.

Only one instance of Missing ever exists.

Missing.Value Field — Represents the sole instance of the Missing class.
Пользователь — друг программиста!
Re: Добавление листа в Excel
От: Evgeshka  
Дата: 06.01.04 12:13
Оценка:
Тут в одном из писем тебе правильно посоветовали.
Для VB.NET необязательные параметры можно не указывать, а в C# везде надо пихать

// Object for missing (or optional) arguments.
object oMissing = System.Reflection.Missing.Value;

вот этот oMissing. ВЕЗДЕ!
пусть их там хоть 50-т будет.
Re[6]: Добавление листа в Excel
От: Ransom Stark Россия  
Дата: 06.01.04 16:14
Оценка:
Здравствуйте, Elena_, Вы писали:

E_>Missing Class — Represents a missing Object. This class cannot be inherited...

Да, я знаю что такое MSDN.
Type.Missing Field
Use the Missing field for invocation through reflection to obtain the default value of a parameter...

Missing.Value == Type.Missing
Re[7]: Добавление листа в Excel
От: Elena_ Россия  
Дата: 06.01.04 22:08
Оценка:
Здравствуйте, Ransom Stark, Вы писали:

RS>Здравствуйте, Elena_, Вы писали:


E_>>Missing Class — Represents a missing Object. This class cannot be inherited...

RS>Да, я знаю что такое MSDN.
RS>Type.Missing Field
RS>Use the Missing field for invocation through reflection to obtain the default value of a parameter...

RS>Missing.Value == Type.Missing


Да, спасибо, теперь я поняла. На www.dotnet247.com

There is no reason to choose System.Reflection.Missing.Value over System.Type.Missing.
Both System.Type.Missing and System.Reflection.Missing.Value are static fields that are an instance of the System.Reflection.Missing type, so COM and Reflection will treat them in the same way.
Пользователь — друг программиста!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.