1

メッセージは言う

Microsoft Access データベース エンジンは、オブジェクト 'Sheet1$' を見つけることができませんでした。オブジェクトが存在すること、およびその名前とパス名のつづりが正しいことを確認してください。「Sheet1$」がローカル オブジェクトでない場合は、ネットワーク接続を確認するか、サーバー管理者に問い合わせてください。

ワークシート内のシートの名前は「Sheet1」です

        string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES"";", fileName);
        string query = String.Format("SELECT [columnName1],[columnName2],[columnName3] from [{0}]", "Sheet1$");
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
        DataSet dataSet = new DataSet();
        dataAdapter.Fill(dataSet);
        DataTable YourTable = dataSet.Tables[0];
        listBox1.DataSource = YourTable.Columns["ColumnName1"];
4

2 に答える 2

5

これは私のために働く:

string filename = @"C:\Book1.xlsm";

        string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\";", filename);
        string query = String.Format("SELECT * from [{0}$]", "Sheet1");
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
        DataSet dataSet = new DataSet();
        dataAdapter.Fill(dataSet);
        DataTable YourTable = dataSet.Tables[0];

*注: *データに作成するヘッダーがない場合HDR=NO

また、あなたの質問であなたが使用したことに気づきました

[columnName1],[columnName2],[columnName3]

列を選択します。これらは、取得したい列の最初のセルの値でなければならないことに注意してください。

列 E を取得するには:

        string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO\";", filename);
        string query = String.Format("SELECT [F5] from [{0}$]", "Sheet1");

5を必要な他の列番号に置き換えます

F1 = A
F2 = B
F3 = C 

等々。

あなたが得ているエラーは、ファイルを開いてアクティブにしている可能性があります。

または、間違ったファイルを指しています (filename文字列に完全なファイル パスを含める必要があることを忘れないでください。また、シートが正しいことを確認してください。また$、パラメータではなく文字列に が含まれていることに注意してください。取得しようとしているシートの名前だけを入力してください. それでも問題が解決しない場合は、使用しているワークシートの完全なファイル名と、C:\Book1.xlsmデータを取得しようとしているシートを教えてください.

于 2013-04-19T16:21:36.507 に答える