Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
oXL = new Excel.Application();
oWB = (Excel._Workbook)oXL.ActiveWorkbook;
oSheet = (Excel._Worksheet)oWB.Sheets[1];
oSheet.Cells[5,10] = "Value";
...
дает это при аварии:
Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
at ConsoleApplication1.Program.Main(String[] args) in C:\Wherever\Visual Studio 2008\Projects\ConsoleApplication20\ConsoleApplication20\Program.
cs:line 60
В этом случае линия 60 является
oSheet = (Excel._Worksheet)oWB.Sheets[1];
и то же самое происходит, если строка написана
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
.
Excel уже открыт на экране в то время, с новым рабочим листом на месте.
вероятно, не ответ вы искали, но я нашел офис Interop поддержка C# s оставляет желать много лучшего. С другой стороны, я нашел VB.NET намного более стабильным, когда дело доходит до автоматизации Excel. Просто личное наблюдение из нескольких проектов, над которыми я работал. – Nasir
Ух, я только что закончил это на C#. Спасибо за совет по VB.NET – user225626
@ nsr81 Ничего плохого ни с C#, ни с VB. Все это скомпилировано в MSIL. Продолжить тему? – RichardTheKiwi