Пожалуйста, посмотрите на мой ответ на вопрос, на который вы ссылаетесь, и который должен дать вам представление о том, как сделать это с помощью VB.NET.
Если вы настаиваете на том, чтобы делать это с C #, вам нужночтобы убедиться, что вы добавили пространство имен и ссылку на параметры кода объекта (мой путь просто указывает куда-то в GAC, вам следует скопировать DLL в другое место):
Затем вы можете использовать объекты из DLL на этапах кода:
Application app = new Application(){
Visible = true
};
Workbook wb = app.Workbooks.Add();
Worksheet ws = (Worksheet)wb.Worksheets.Add();
ws.Visible = XlSheetVisibility.xlSheetVisible;
Как видите, вы также можете использовать именованные перечисления, но так же, как в C # (и в отличие от VBA)вам нужно указать его полностью (XlSheetVisibility.xlSheetVisible
вместо просто xlSheetVisible
)
EDIT : Преимущество VB.NET в том, что вы можете использовать метод CreateObject () для взаимодействия сExcel Interop DLL без явного указания пути к этой DLL.Это полезно, если у вас нет возможности сохранить DLL в папке, общей для всех ПК с ресурсами.Если вы можете, однако, то подход C # вызовет у вас гораздо меньше головной боли.
А что касается возможности ссылаться на объекты Excel с «префиксом» Excel (например: Excel.Workbook
вместо просто *)1022 *) вам нужно указать псевдоним для вашего пространства имен Excel.Что вы можете сделать так:
После этого ваш код будет работать:
var excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbooks books = excelApp.Workbooks;
Это на самом деле неплохой подходпоскольку некоторые из классов Excel могут иметь то же имя, что и другие классы .NET.Я думаю, что я должен был сделать это также из-за Table
или Document
или что-то ...