Использование OleDB:
using System.Data.OleDb;
private void readExcel(string pExcelPath, string pSheetName)
{
DataTable sheet1 = new DataTable();
OleDbConnectionStringBuilder csbuilder = new OleDbConnectionStringBuilder();
csbuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
csbuilder.DataSource = pExcelPath;
if (excelFirstRowIsHeader == true)
csbuilder.Add("Extended Properties", "Excel 12.0 Xml;HDR=YES");
else
csbuilder.Add("Extended Properties", "Excel 12.0 Xml;HDR=NO");
using (OleDbConnection connection = new OleDbConnection(csbuilder.ConnectionString))
{
connection.Open();
string sqlQuery = @"SELECT * FROM [" + pSheetName + "]";
using (OleDbDataAdapter adapter = new OleDbDataAdapter(sqlQuery, connection))
{
adapter.Fill(sheet1);
excelData_dataGridView.DataSource = sheet1;
}
connection.Close();
}
}
Этот код поддерживает Excel-файлы, созданные с помощью Excel 2007/2010. Булева excelFirstRowIsHeader используется для specifiy, если ваш первенствует содержит строку заголовка (если первая строка в Excel лист используется заголовок)
Вы также можете использовать Interop-ассамблею, чтобы прочитать файл Excel, но дл него MS Excel должен быть установлен.
Спасибо за ваш код. Во время его запуска было создано следующее исключение. «Механизм базы данных Microsoft Office Access не может открыть или записать в файл« E: \ 09-2013 \ SalesRep ». Он уже открыт исключительно другим пользователем или вам необходимы разрешения на просмотр и запись его данных». Я следил за этим сайтом, чтобы решить эту проблему. http://www.aspdotnet-suresh.com/2013/01/c-microsoft-office-access-database.html. Тем не менее я получаю то же исключение. Путь к файлу: E: \ 09-2013 \ SalesRep. Имя файла: Openleads.xlsx. Пожалуйста, помогите мне решить это? –
Ну, может быть несколько причин: 1. Учетная запись, которая используется IIS, не имеет разрешений Windows NT для файловой базы данных или для папки, содержащей файл 2. Он действительно используется другим процессом 3. БД связана с другой базой данных на сетевом диске. У меня никогда не было этой ошибки –
Спасибо за ваш ответ –