2

インポートは.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();

私はまた、その中の物事を変更し、別の方法でそれを再び保存するという解決策を見てきました。それは、Webサイトへのファイルアップロードで使用する他の開発者に送信されるDLLに入るため、それを行わずに機能させる必要があります。したがって、ユーザー(クライアント)はファイルをアップロードし、検証で有効なExcelファイルであると判断されると、コードに入ります。

4

0 に答える 0