C#: как открыть и закрыть книгу Excel?

Кто-нибудь знает, как просто открыть и закрыть книгу Excel?

Мне не нужно читать какие-либо данные из файла, мне просто нужно открыть и закрыть его. (*)

Я предполагаю, что мне нужно будет ссылаться на сборку Microsoft.Office.Interop.Excel.


*Причина: я уже настроил данные сводной таблицы с помощью сторонней библиотеки (Aspose). Теперь мне нужно прочитать сгенерированную сводную таблицу.

К сожалению, библиотека Aspose не может генерировать сводную таблицу во время выполнения. Требуется, чтобы кто-то открыл файл в Excel чтобы Excel мог генерировать значения сводной таблицы.


person Jim G.    schedule 06.10.2009    source источник


Ответы (3)


после ссылки на Microsoft.Office.Interop.Excel также обязательно очистите в конце.

using Excel = Microsoft.Office.Interop.Excel;

        Excel.ApplicationClass _Excel;
        Excel.Workbook WB;
        Excel.Worksheet WS;

    try
        {

        _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
        WB = _Excel.Workbooks.Open("FILENAME",
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing);

            //do something

        }
        catch (Exception ex)
        {
            WB.Close(false, Type.Missing, Type.Missing);

            throw;
        }
        finally
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();

            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);

            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);


        }
person Gratzy    schedule 06.10.2009
comment
При реализации этого я столкнулся с ошибкой. Для типа Microsoft.Office.Interop.Excel.ApplicationClass не определен конструктор. Пожалуйста, обратитесь к этому для исправлений. stackoverflow .com/questions/14016264/ - person Desmond; 31.10.2013
comment
Я бы также добавил _Excel.Quit(), чтобы, наконец, заблокировать, чтобы закрыть приложение Excel. - person arthur; 11.05.2015

Быстрый Google дает мне это в проекте кода:

http://www.codeproject.com/KB/office/csharp_excel.aspx

person Michael Edwards    schedule 06.10.2009

Рассмотрите возможность использования System.Diagnostics.Process для запуска, мониторинга и закрытия Excel. Этот сайт дает хорошее введение: http://www.thescarms.com/dotnet/Process.aspx, включая запуск с невидимым окном и отправку в него ввода.

person Ed Power    schedule 06.10.2009