Winforms 使用c#.net导入excel文件

Winforms 使用c#.net导入excel文件,winforms,excel,c#-4.0,Winforms,Excel,C# 4.0,我需要导入一个excel并对其进行一些处理。 应使用C#检索这些excel数据。 当我被谷歌搜索时,我感到困惑。 有人能提供c代码来实现它吗 提前感谢。使用OleDB: using System.Data.OleDb; private void readExcel(string pExcelPath, string pSheetName) { DataTable sheet1 = new DataTable(); OleDbCon

我需要导入一个excel并对其进行一些处理。 应使用C#检索这些excel数据。 当我被谷歌搜索时,我感到困惑。 有人能提供c代码来实现它吗


提前感谢。

使用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 2007/2010创建的Excel文件。 布尔值ExcelFirstRowsHeader用于指定excel是否包含标题行(如果excel工作表中的第一行用作标题)


您也可以使用Interop程序集读取excel文件,但必须安装MS excel。

谢谢您的代码。运行它时,引发了以下异常。“Microsoft Office Access数据库引擎无法打开或写入文件‘E:\09-2013\SalesRep’。该文件已被其他用户独占打开,或者您需要查看和写入其数据的权限。”我通过此网站解决了此问题。我仍然得到同样的例外。文件路径:E:\09-2013\SalesRep。文件名:Openleads.xlsx。请帮我解决这个问题?可能有多个原因:1。IIS使用的帐户对基于文件的数据库或包含文件2的文件夹没有Windows NT权限。它确实被另一个进程3使用。数据库链接到网络驱动器上的另一个数据库。我从来没有犯过这个错误谢谢你的回复