2017-10-06 10 views
0

ExcelのスプレッドシートをRevitのWindowsフォーム上のテーブルとして表示しようとしています 最初にVisualStudioでコードを書いて、 (Iパスと枚数を入力すること)とすることを実行することによって、それがWindowsフォームを開き、番組表形式でデータをエクセル 'Excel情報を表示する方法RevitからRevit APIおよびWindowsフォームをVisual Studioで表示する

名前空間ShowDataWindowsForm { 公共部分クラスをForm1:フォーム { パブリックForm1の() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) 
    { 
     string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
     textBoxPath.Text + ";Extended Properties=Excel 12.0;"; 
     OleDbConnection conn = new OleDbConnection(PathConn); 

     OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM 
     [" + textBoxSheet.Text + "$]", conn); 
     DataTable dt = new DataTable(); 
     myDataAdapter.Fill(dt); 

     dataGridView1.DataSource = dt; 
    } 
} 

は、それから私は、外部コマンドを作成し、そのためのWindowsフォームを追加し、まったく同じプロセスをしたが、これは外部コマンドのコードです:

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)] 

パブリッククラスiShowDataWindowsForm:IExternalCommand { 静的なAddInId appId =新しいAddInId(新しいGUID( "DB98294F-89D9-4EAE-A990-63A0694F91CC")); 公共の結果実行(ExternalCommandData commandData、REF文字列メッセージ、ELEMENTSET ELEMENTSET) は{

using (Form1 thisform = new Form1()) 
    { 
     thisform.ShowDialog(); 

    } 

    return Result.Succeeded; 
} 

私はRevitのを開いて、プラグインを実行したときに私の問題があるが、それはWindowsフォームを開き、Visual Studioでのような、Iパスとシート番号を入力しますが、[表示]ボタンをクリックすると、Revitがクラッシュして閉じます。 誰かが私を助けることができれば感謝します。 この写真はVisual Studioでの動作を示していますが、Revitではクラッシュします。 See picture

enter image description here

私はちょうど今、それだけのVisual Studioで表示する下をクリックして働いて、コード自体にパスし、シート番号を入れて、しかし、まだWindowsフォーム用のRevit 最終的なコードでクラッシュしません: `名前空間ExcelVisualStudio {パブリック部分クラスをForm1:フォーム {公共のForm1(){ のInitializeComponent(); }

private void button1_Click(object sender, EventArgs e) 
    { 
     string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\farshidmoosavi\Desktop\Schedule3.xls" + ";Extended Properties=Excel 12.0;"; 
     OleDbConnection conn = new OleDbConnection(PathConn); 

     OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [" + "Sheet1" + "$]", conn); 
     DataTable dt = new DataTable(); 
     myDataAdapter.Fill(dt); 

     dataGridView1.DataSource = dt; 
    } 
} 

} ` 私は、コードをデバッグし、私はこれがクラッシュするプログラムを引き起こし誤りであることが判明:非ユーザーコード「たSystem.Data.Common.DbDataAdapter上ステッピング:へ ステップ。'Revit.exe'(Managed(v4.0.30319)): 'C:\ windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Transactions \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Transactions.dll' 、読み込み中のシンボルをスキップしました。モジュールが最適化され、デバッガのオプション「Just My Code」が有効になります。 例外がスローされました:System.Data.dll内の 'System.AccessViolationException' プログラム '[168] Revit.exe:Managed(v4.0.30319)'がコード-1073741819(0xc0000005) 'アクセス違反'で終了しました。

まだ修正方法がわかりません。

答えて

0

問題を解決しました。 最初はRevit 2018を試しましたが、それはエラーを表示してクラッシュしなかったという利点がありました。このエラーを調べることで、Officeのバージョンを2013、Accessエンジン64b、Excel形式のスプレッドシートとして保存したファイル形式を.xlsに変更しました。その後、それは働いた。

関連する問題