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

2

Скажем, я хочу найти значение ячейки в файле 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 на С#, а не в VBA?

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

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

Теги:
excel
visual-studio

4 ответа

3
Лучший ответ

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

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;
...
  • 1
    Вы также можете ссылаться на библиотеку объектов Microsoft Excel на вкладке COM.
3

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

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

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


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

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

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

2

Вам не нужно использовать 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);

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

  • 0
    Это полезно только в том случае, если электронная таблица содержит табличную структуру и вас не интересует форматирование. Смотри мой ответ.
  • 0
    Ах, - отметил. Спасибо! Я все равно оставлю ответ в качестве справки на тот случай, если кто-то другой отвечает этим требованиям.
1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню