2017-10-06 83 views
0

我想在Revit中的Windows窗體上顯示一個Excel電子表格, 首先我在VisualStudio中編寫代碼,我創建了一個windows窗體(即我輸入路徑和片數),並且通過運行時,它打開窗形式和節目表格式Excel數據`如何在Revit中通過Revit API和Visual Studio中的窗體顯示Excel信息

命名空間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; 
    } 
} 

然後創建的外部命令,添加了一個視窗形式並做完全相同的過程,而這是外部命令的代碼:

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

公共類iShowDataWindowsForm:IExternalCommand { 靜態AddInId APPID =新AddInId(新的GUID( 「DB98294F-89D9-4EAE-A990-63A0694F91CC」)); 公開結果執行(ExternalCommandData commandData,裁判字符串消息,ELEMENTSET ELEMENTSET) {

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

    } 

    return Result.Succeeded; 
} 

我的問題是,當我打開Revit和運行插件,它會打開一個窗口形式像在Visual Studio中,我輸入路徑和圖紙編號,但點擊顯示按鈕後,Revit會崩潰並關閉。 我很感激任何人都可以幫助我。 此圖顯示了它在Visual Studio中的工作方式,但在修復中會崩潰。 See picture

enter image description here

我只是把路徑和紙張編號代碼本身,現在它的工作由剛上顯示底部單擊在Visual Studio中,但仍然沒有崩潰的Windows窗體的Revit 最終代碼:`命名空間ExcelVisualStudio { Public partial class Form1:Form { public 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'(管理(v4.0.30319)):加載 'C:\ Windows \ Microsoft.Net \組件\ 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:託管(v4.0.30319)' 已經退出,代碼-1073741819(0000005) '訪問衝突'。

仍然不知道如何解決。

回答

0

我剛剛解決了這個問題。 起初,我嘗試了Revit 2018,其優點是它顯示錯誤並沒有崩潰。通過搜索錯誤,我將Office的版本更改爲2013,Access引擎64b,然後將我保存爲Excel電子表格的文件格式更改爲.xls。然後它工作。

相關問題