关闭Excel文件时,外部表格不是预期的格式

时间:2013-02-07 09:26:16

标签: c# oledb import-from-excel

我的导入适用于.xls文件,但它不适用于我在Excel 2010中创建的.xlsx,除非它已打开。

我的代码如下所示:

public static DataSet Sheets(string filePath, bool header)
        {
            DataSet dsResults = new DataSet();
            string hasHeader = header ? "YES" : "NO";

            OleDbConnectionStringBuilder sbConnection = new OleDbConnectionStringBuilder();
            String strExtendedProperties = String.Empty;
            sbConnection.DataSource = filePath;
            if (Path.GetExtension(filePath).ToLower().Equals(".xls"))//Excel 97-03
            {
                sbConnection.Provider = "Microsoft.Jet.OLEDB.4.0";
                strExtendedProperties = String.Format("Excel 8.0;HDR={0};IMEX=1", header);
            }
            else if (Path.GetExtension(filePath).ToLower().Equals(".xlsx"))  // Excel 2007
            {
                sbConnection.Provider = "Microsoft.ACE.OLEDB.12.0";
                strExtendedProperties = String.Format("Excel 12.0;HDR={0};IMEX=1", header);
            }
            sbConnection.Add("Extended Properties", strExtendedProperties);

            using (OleDbConnection conn = new OleDbConnection(sbConnection.ToString()))
            {
                conn.Open();
                DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                foreach (DataRow drSheet in dtSheet.Rows)
                {
                    if (drSheet["TABLE_NAME"].ToString().Contains("$") && !drSheet["TABLE_NAME"].ToString().EndsWith("_"))
                    { .......

我在conn.Open();

上收到的错误

我也看过解决方案,要求改变其中的内容并以其他方式再次保存。事情是我必须让它工作而不这样做,因为它进入一个DLL,转到其他开发人员将使用它与网站上的文件上传。所以用户(客户端)将上传一个文件,当验证说它是一个有效的excel文件时,它将进入我的代码。

0 个答案:

没有答案