.NET實現Office Excel自定義公式 普遍應用於報表與數據分析

在管理軟件開發的功能點中,有至關一部分功能是與Excel作數據交互,產生Excel 數據報表。若是Excel報表的數據計算方法頗有規律可循,則能夠經過自定義公式來解決。好比常見的資產負債表,利潤表,取數都很是有規律。安全

Excel DNA是一套用.NET框架實現的Excel自定義公式引擎,互聯網上有不少Excel財務方面的報表是基於此技術實現。Excel DNA徹底開放源代碼,可到網上下載它的完整源代碼和例子工程,地址是https://exceldna.codeplex.com 服務器

 

開發自定義公式

1 建立用戶自定義公式(Visual Basic)

用記事本建立一個Test.dna的文本文件,參考下面的代碼例子,實現一個簡單的加法公式。框架

  <DnaLibrary>
    <![CDATA[
        Public Module MyFunctions
            Function AddThem(x, y)
                AddThem = x + y
            End Function
        End Module
    ]]>
    </DnaLibrary>

打開Excel,輸入公式=AddThem(4,2),能夠看到Excel計算後的公式結果是6。spa

 

2 建立自定義公式(C#)

建立一個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

 

3  經過.NET程序集建立自定義公式

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>

 

部署 Deployment

拷貝一份文件ExcelDna.xll到須要的目錄中,重命名爲須要的名字,好比上面的Test.xll,將上面的Test.dna文件也放到同一個文件中。雙擊xll文件會打開Excel程序,blog

提示安全聲明,選爲本會話啓用此加載項。繼承

image

而後就可使用自定義的公式,打開或新建一個Excel文件,輸入公式,回車後執行公式。

image

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>

 

打包 Packing

注意在部署時,必須同時存在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中的自定義公式。

 

界面(Ribbon,Panel)與COM服務器支持

Excel DNA支持建立一個自定義的面板,添加一個WinForms自定義控件,繼承於System.Windows.Forms.UserControl,再添加下面的碼調用便可。

CustomTaskPane myCTP = CustomTaskPaneFactory.CreateCustomTaskPane(typeof(MyUserControl), myTitle

更多內容可參考下載的源代碼包,有詳細的例子和說明文檔。

相關文章
相關標籤/搜索