Что мне нужно сделать, чтобы настроить Visual Studio для работы с файлом Excel? - PullRequest
2 голосов
/ 20 января 2010

Допустим, я хочу найти значение ячейки в файле 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?

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

Нужно ли открывать файл для работы с ним?

Ответы [ 4 ]

3 голосов
/ 20 января 2010

Я написал собственный, довольно простой класс для извлечения данных из электронной таблицы 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;
...
3 голосов
/ 20 января 2010

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

Чтобы использовать автоматизацию Excel, необходимо установить PIA Office и добавить ссылку на 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 в возвращаемой таблице данных.

2 голосов
/ 20 января 2010

Вы не должны использовать взаимодействие.

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

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);

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

1 голос
/ 20 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...