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??
Здравствуйте, 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
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] ругается.
Здравствуйте, 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;
Здравствуйте, 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...
Здравствуйте, 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
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.