2016-08-01 10 views
0

C#プロジェクトのResourcesフォルダに格納されているExcelファイル(Trail_Test.xls)にデータが格納されています。 このxlsファイルから、私たちが持っているWindowsフォームアプリケーションのdataGridViewにデータをロードする必要があります。他のデバイスのデータソースフォルダ

これは、我々が

System.Data.OleDb.OleDbConnection MyConnection; 
System.Data.DataSet DtSet; 
System.Data.OleDb.OleDbDataAdapter MyCommand; 
string path = System.AppDomain.CurrentDomain.BaseDirectory + @"Resources\Trail_Test.xls"; 
MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + path + "';Extended Properties=Excel 8.0;"); 
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [20$]", MyConnection); 
DtSet = new System.Data.DataSet(); 
MyCommand.Fill(DtSet); 
dataGridView1.Columns.Clear(); 
dataGridView1.DataSource = DtSet.Tables[0]; 

を使用するコードですこれは、8行にエラーを与える:

Microsoft Jetデータベースエンジンは、オブジェクト'20 $」を見つけることができませんでした。オブジェクトが存在し、その名前とパス名のスペルが正しいことを確認してください。

任意のヘルプ??

おかげ

答えて

2

としてマークされていることを確認してください。実行ファイルが

C:\Users\Adham\Documents\Visual Studio 2010\Projects\Curve Fitting\Curve Fitting\ 

にある場合たとえば、その後、.xlsファイルへのパスは、installitionフォルダに到達する必要があり

string path = System.AppDomain.CurrentDomain.BaseDirectory + @"Resources\Trail_Test.xls"; 

string connectionString = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + path + "';Extended Properties=Excel 8.0;" 
+0

@ Slaiこれはまさに私たちが欲しかったことです。 – user3332603

+1

は、 'GetFullPath'が現在のディレクトリに依存するため、代わりに' System.AppDomain.CurrentDomain.BaseDirectory'を使用します。 – Slai

+0

@ Slai質問は新しいコードに従って編集されました – user3332603

2

あなたMyConnectionとオブジェクトが

を含むデータソース= 'C:\ユーザーはプロジェクト\ Visual Studioの2010 \ Adham \ドキュメント\ \カーブフィッティング\カーブフィッティング\リソース\のTrail_Test.xls

ハードコードされていてはならないものがあり、Adham以外のコンピュータで実行すると問題が発生します。

+0

があり、私は他のコンピュータが、Adhamの上で実行されたときに発生するどのようにこれらの問題を修正する、その後、同意するものとします。 – user3332603

1

ことは、これを試してみてください:ファイルがパスが実行可能ファイルへの相対的である必要があり、それには、ちょうど右クリックし、「新しい場合はコピー=出力ディレクトリにコピーします」と見る「プロパティ」

関連する問題