Что мне нужно сделать, чтобы настроить 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
- Не удается сохранить файл excel в c #, если он не дает ошибку только для чтения?
- программно Переместить и проверить локальный файл на Sharepoint C #
- Поиск нескольких листов в Excel C #
- Как я могу динамически отображать несколько значений в ярлыках?
Должен ли файл быть открытым, чтобы работать с ним?
- Импорт объектов Visual Studio в детали
- ClosedXML Добавление формулы создает нечитаемый контент
- C # - можно ли использовать Letter Coords (A1) с workSheet.Cells?
- Как сканировать определенную строку из excel и output - это новый шаблон?
- Как я могу сделать этот скрипт, который читает excel, а затем находит и копирует файлы быстрее?
- Условное форматирование на основе значения ячейки
- Как эмулировать щелчок мышью и аналогичную степень интерактивности надстройкой Office?
- Как обозначить оси Excel X и Y на 2d-графике
Я написал свой собственный довольно простой класс для извлечения данных из электронной таблицы 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. Вот подробный урок о том, как это делается.