Что мне нужно сделать, чтобы настроить Visual Studio на возможность управлять файлом Excel?

Предположим, я хочу найти значение ячейки в файле Excel. В VBA я бы сделал следующее:

Dim varValue As Variant Dim wb As Workbook Dim ws As Worksheet Set wb = ThisWorkbook Set ws = wb.Worksheets("Sheet1") varValue = ws.Range("A1").Value 

Как настроить проект Visual Studio, чтобы я мог получить доступ и изменить файл Excel на C #, а не в VBA?

Какие ссылки мне нужно добавить?

Должен ли файл быть открытым, чтобы работать с ним?

Я написал свой собственный довольно простой класс для извлечения данных из электронной таблицы Excel через C #. Вам необходимо включить:

 using Microsoft.Office.Interop; 

Тогда вы можете сделать что-то вроде этого, чтобы начать:

 Excel.Application excel; Excel.Workbook workbook; Excel.Worksheet worksheet; Excel.Sheets sheets; Excel.Range range; excel = new Microsoft.Office.Interop.Excel.Application(); workbook = excel.Workbooks.Open(workbookName, 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); sheets = workbook.Worksheets; ... 

Вы можете использовать автоматизацию Excel или стороннюю библиотеку.

Чтобы использовать автоматизацию Excel, вы должны установить Office PIA и добавить ссылку на Microsoft.Office.Interop.Excel.dll . Затем вы должны написать код, чтобы открыть файл (используя класс ApplicationClass ) и управлять им.

Этот подход будет использовать ту же объектную модель, с которой вы привыкли в VBA. Однако, поскольку C # 3 не поддерживает необязательные параметры или слабую типизацию, это будет несколько раздражать. Было бы проще сделать это в VB .Net или C # 4 (в настоящее время в бета-версии)


Автоматизация Excel не подходит для работы кода в неинтерактивном контексте. Существует множество сторонних библиотек, полностью написанных на .Net, которые могут читать и записывать файлы Excel.

Кроме того, если вам нужно только обрабатывать табличные данные, вы можете использовать OleDb для запуска операторов SQL в файлах Excel с помощью этой строки подключения .

Вы можете использовать OleDbCommand s для запуска SELECT * FROM [SheetName] , считая, что лист является таблицей. Вы также можете выбрать из именованного диапазона. Вы можете получить доступные таблицы, вызвав oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null) и посмотрев столбец TABLE_NAME на возвращаемый DataTable.

Вам не нужно использовать interop.

Вам просто нужна ссылка на …

 System.Data.OleDb 

Определите строку соединения, как и любой другой источник данных:

 string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourPath;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"; 

И добавьте код для запроса своей базы данных:

 OleDbConnection objConnection = new OleDbConnection(); string strSQL = "SELECT * FROM [YourTable]"; objConnection = new OleDbConnection(connectionString); objConnection.Open(); OleDbCommand cmd = new OleDbCommand(strSQL, objConnection); DataTable dt = new DataTable(); OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(dt); 

… Затем перечислите строки данных.

Вы должны использовать Microsoft.Office.Interop.Excel. Вам понадобится использовать COM Interop. Вот подробный урок о том, как это делается.

  • Необходимо выделить буквы из чисел в строке, через vb.net
  • Перепишите процедуру для поиска open excel worbook
  • NPOI Редактирование файлов Excel с сводными таблицами и динамическими диаграммами
  • Получение строк из arduino в VS, как их хранить в файле csv или xls?
  • VB: изменение формы после заполнения данных
  • Цикл через каждую ячейку в выбранном диапазоне
  • Как скопировать и вставить лист Excel по списку выпадающего списка
  • Импортировать данные заголовка excel в выпадающем списке .net
  • Как правильно закрыть / удалить Excel COM в C #? (Процесс Excel не закрывается)
  • Как я могу изменить пользователя, служба C # открывает приложение excel?
  • Как не вешать Excel?
  • Давайте будем гением компьютера.