2011-04-25 51 views
0

我想用任何版本的Excel在任何PC上使用延遲綁定到我的應用程序。獲得UsedRange與延遲綁定

所以我正在閱讀並試圖實現我看到的例子,但這太令人困惑。

我成功創建實例併成功打開文件,但我如何獲得UsedRange?

我的代碼:

object excelApp; 
object book; 
object usedrange; 

excelType = Type.GetTypeFromProgID("Excel.Application"); 
excelApp = Activator.CreateInstance(excelType); 


object docs = excelApp.GetType().InvokeMember("Workbooks", 
    BindingFlags.GetProperty, null, excelApp, null); 


object[] parms = { "C:\\ABC", Missing.Value, true }; 
book = docs.GetType().InvokeMember("Open", 
    BindingFlags.InvokeMethod, null, docs, parms); 


object[] params2 = { "UsedRange", Missing.Value }; 
usedrange = book.GetType().InvokeMember("Range", 
    BindingFlags.GetProperty, null, book, params2); 

再怎麼我可以得到由單元格的行,然後細胞?

在此先感謝!

+0

WorkBook既沒有Range也沒有UsedRange成員。首先儘早完成這項工作。儘可能利用C#版本4 *動態*關鍵字。 – 2011-04-25 23:55:13

回答

0

使用Excel.Interop api。示例:http://www.dotnetperls.com/excel

+0

Excel Interop之前使用過,但是當我在其他計算機上使用Office的其他版本運行我的應用程序時遇到了一個問題,他不識別該庫,因爲它們具有不同的版本。 – Miguel 2011-04-25 23:49:40

+0

我不認爲這應該很重要,如果你總是將Excel.Interop程序集複製到你的項目輸出。在應用程序中包含二進制文件。 – mservidio 2011-04-25 23:51:38