3

データ レコードを取得して監視ツールに表示するために、Excel ファイルにクエリを実行しています。問題は、次のリクエストで ID を使用してレコードを選択しようとすると、クエリの実行時にエラーがスローされることです。

ExecuteCommandTextErrorHandling

クエリの型とターゲット セルに互換性がないことを教えてくれます。

私のリクエストは次のようになります

SELECT TOP 20 [Fields...] 
FROM [RECORD$] 
WHERE (([id] = '1'))

id 列には数字以上のものを含めることができるため、そのセル タイプは標準のデフォルト タイプです。

私の質問は次のとおりです。以前にそのタイプを知らずにレコードを取得するにはどうすればよいですか?

列の型を強制する必要がありますか? 例外をキャッチして、引用符なしで再試行する必要がありますか?

Excelファイルと私の接続文字列を照会するために使用されるコードは次のとおりです

 public static DataTable queryXlsFile(String query, OleDbConnection dbConnection)
 {
        OleDbDataAdapter dbCommand = new OleDbDataAdapter(query, dbConnection);
        DataTable dt = new DataTable();
        dbCommand.Fill(dt);
        return dt;
    }

Provider=Microsoft.ACE.OLEDB.12.0; data source=C:\\test\\321.xls; Extended Properties=\"Excel 8.0;HDR=Yes;\";

前もって感謝します。

4

2 に答える 2

1

IMEX=1; を追加してみてください。

HDR=あり;IMEX=1"

于 2012-04-27T07:54:39.557 に答える
1

多くの行がある場合、タイプは最もタイプです。それ以外の場合、タイプは最初の行に依存し、1 つの回答のタイプは文字列です。

于 2012-04-27T08:55:10.807 に答える