在管理軟件開發的功能點中,有至關一部分功能是與Excel作數據交互,產生Excel 數據報表。若是Excel報表的數據計算方法頗有規律可循,則能夠經過自定義公式來解決。好比常見的資產負債表,利潤表,取數都很是有規律。安全
Excel DNA是一套用.NET框架實現的Excel自定義公式引擎,互聯網上有不少Excel財務方面的報表是基於此技術實現。Excel DNA徹底開放源代碼,可到網上下載它的完整源代碼和例子工程,地址是https://exceldna.codeplex.com 服務器
用記事本建立一個Test.dna的文本文件,參考下面的代碼例子,實現一個簡單的加法公式。框架
<DnaLibrary><![CDATA[Public Module MyFunctionsFunction AddThem(x, y)
AddThem = x + yEnd FunctionEnd Module]]></DnaLibrary>
打開Excel,輸入公式=AddThem(4,2),能夠看到Excel計算後的公式結果是6。spa
建立一個Test.dna的文本文件,參考以下所示的例子代碼,實現字符串與雙精度類型數值相加的公式。開放源代碼
<DnaLibrary Language="CS">
<![CDATA[using ExcelDna.Integration;
public class MyFunctions{[ExcelFunction(Description="Joins a string to a number", Category="My functions")]public static string JoinThem(string str, double val){return str + val;
}}]]></DnaLibrary>
能夠打開Excel,輸入公式=JoinThem(「James」,1983),可看到實際的運算結果。excel
Visual Basic,C#都是.NET的一等公民,用本身熟悉的語言建立一個Class Library類庫項目TestLib,參考以下的代碼例子,實現兩個雙精度數值相加的公式。code
using ExcelDna.Integration;
public class MyFunctions{[ExcelFunction(Description="Multiplies two numbers", Category="Useful functions")]public static double MultiplyThem(double x, double y){return x * y;
}}
再來建立一個Test.dna的文本文件,添加以下的文本片斷,用於聲明前面建立的公式。orm
<DnaLibrary><ExternalLibrary Path="TestLib.dll" />
</DnaLibrary>打開Excel,輸入公式=MultiplyThem(2,3) 或=MultiplyThem(2; 3),看到計算結果是5。
若是.NET程序集編譯成.NET 4.0,則須要稍微修改一下Test.dna的文本內容,參考下面的例子。
<DnaLibrary RuntimeVersion="v4.0" >
<ExternalLibrary Path="TestLib.dll" />
</DnaLibrary>
拷貝一份文件ExcelDna.xll到須要的目錄中,重命名爲須要的名字,好比上面的Test.xll,將上面的Test.dna文件也放到同一個文件中。雙擊xll文件會打開Excel程序,blog
提示安全聲明,選爲本會話啓用此加載項。繼承
而後就可使用自定義的公式,打開或新建一個Excel文件,輸入公式,回車後執行公式。
TestClassLibrary程序集中自定義公式的方法的源代碼。要編譯必須引用程序集ExcelDna.Integration.dll。
[ExcelFunction(Description="My first Excel-DNA function")]
public static string MyFirstFunction(string name){return ("Hello " + name);}
Test.dna文件的內容以下,只是簡單的聲明上面的程序集中的方法。
<DnaLibrary Name="First Add-In" RuntimeVersion="v4.0"><ExternalLibrary Path="TestClassLibrary.dll" /></DnaLibrary>
注意在部署時,必須同時存在dna文件和xll文件,並且這兩個文件的名字要徹底相同。Excel DNA支持將這兩個文件合併打包在一個文件中。
運行程序ExcelDna\Distribution\ExcelDnaPack.exe,並傳入參數Test.dna。以下的命令所示例的:
ExcelDnaPack.exe, Test.dna
執行完成以後,會生成一個Test-packed.xll文件,這個文件能夠拷貝到其它電腦中直接執行。Test-packed.xll中已經包含Test.dna和TestLibrary.dll文件,運行時會主動被加載。
拋開復雜的Visual Studio Tools for Office, 憑藉這幾天簡單的例子,我想讀者應該能夠快速的上手,高效率的創做Excel中的自定義公式。
Excel DNA支持建立一個自定義的面板,添加一個WinForms自定義控件,繼承於System.Windows.Forms.UserControl,再添加下面的碼調用便可。
CustomTaskPane myCTP = CustomTaskPaneFactory.CreateCustomTaskPane(typeof(MyUserControl), myTitle
更多內容可參考下載的源代碼包,有詳細的例子和說明文檔。