程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 使用VC++調用C#封裝的DLL庫實現Excel文件的操作(不用安裝office軟件環境)

使用VC++調用C#封裝的DLL庫實現Excel文件的操作(不用安裝office軟件環境)

編輯:C#入門知識

 用Visual Studio 2005創建C# 的Class Libtary,把下面的代碼拷貝進來。
[csharp] view plaincopyprint?
// Class1.cs 
// A simple managed DLL that contains a method to add two numbers. 
using System; 
 
namespace ManagedDLL 

    // Interface declaration. 
    public interface ICalculator 
    { 
        int Add(int Number1, int Number2); 
    }; 
 
    // Interface implementation. 
    public class ManagedClass:ICalculator 
    { 
       public int Add(int Number1,int Number2) 
            { 
                return Number1+Number2; 
            } 
    } 

打開 ” 工具=》 Visual Studio 2005 Command Prompt “輸入” sn.exe -k MyKeyFile.SNK “創建密鑰文件,將 MyKeyFile.SNK文件從C:\Program Files\Microsoft Visual Studio 8\vc\bin目錄拷貝到你的工程目錄下,打開 AssemblyInfo.cs文件。替換代碼:
[assembly: ComVisible(false)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
使用
[assembly: ComVisible(true)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("..\\..\\MyKeyFile.SNK")]
編譯連接就能夠生成Dll文件。

為了能夠調用新建的托管DLL文件,需要將這個組件進行注冊。
打開Visual Studio 2005 Command Prompt,切換到包含剛才生成的DLL目錄,輸入命令”RegAsm.exe ManagedDLL.dll /tlb:ManagedDLL.tlb /codebase ”,會提示注冊成功。
接下來新建C++的Win32 Project 項目,打開代碼視圖,引入RegAsm.exe生成的庫文件。
// Import the type library.
#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
注意文件路徑,和DLL文件在同一路徑下。
完整文件的代碼如下:
C++ Client
 // CPPClient.cpp: Defines the entry point for the console application.
// C++ client that calls a managed DLL.

#include "stdafx.h"
#include "tchar.h"
// Import the type library.

#import "..\ManagedDLL\bin\Debug\ManagedDLL.tlb" raw_interfaces_only
using namespace ManagedDLL;
int _tmain(int argc, _TCHAR* argv[])
{
    // Initialize COM.
    HRESULT hr = CoInitialize(NULL);

    // Create the interface pointer.
    ICalculatorPtr pICalc(__uuidof(ManagedClass));

    long lResult = 0;

    // Call the Add method.
    pICalc->Add(5, 10, &lResult);

    wprintf(L"The result is %d\n", lResult);


    // Uninitialize COM.
    CoUninitialize();
    return 0;
}

Note:
注意更改通用語言運行庫支持的編譯器選項為(//clr:oldSyntax)。
步驟如下:右鍵項目屬性=》配置屬性=》常規=》公共語言運行時支持=》原來的語法(clr:oldSyntax)
到此,C++調用C#的Dll庫文件的Demo已經完成。

下面是在此基礎上在C#的DLL文件裡添加Excel文件的操作實現。
 添加引用到你的項目:

其實我只添加了org.in2bits.MyXls.dll文件,這個文件可以自己百度。
點擊C#的項目,點擊引用,右鍵添加引用,找到org.in2bits.MyXls.dll文件如下圖:


添加代碼:using org.in2bits.MyXls;
這時進行編譯,你可能遇到如下提示的錯誤,

 經過以上操作,引用DLL文件已經成功,接下來就可以使用DLL文件裡的類和方法、屬性了。
可以參考怎麼調試C#的DLL,這個自己百度解決。
Have A Good Time!開始你的冒險之旅吧。。。。
參考:
導出Excel的測試,轉載至上面的一個鏈接,在這裡謝謝了。
[csharp]
protected void ExportBtn_Click(object sender, EventArgs e) 
 { 
     XlsDocument xls = new XlsDocument(); 
     xls.FileName = "TestList.xls"; 
 
     int rowIndex = 1; 
     Worksheet sheet = xls.Workbook.Worksheets.Add("測試表");//Sheet名稱 
 
     Cells cells = sheet.Cells; 
     Cell cell = cells.Add(1, 1, "編號"); 
     cell.Font.Bold = true; 
     cell = cells.Add(1, 2, "名稱"); 
     cell.Font.Bold = true; 
 
     foreach (DataRow row in table.Rows) 
     { 
         cells.Add(rowIndex, 1, rowIndex); 
         cells.Add(rowIndex, 2, "名稱"+rowIndex); 
 
         rowIndex++; 
     } 
     xls.Send();//如果改成Save()函數,就能保存Excel文件到本地了。文件在C++項目的源文件目錄下。 
 } 
哦,忘記了,注意還需要把org.in2bits.MyXls.dll文件,拷貝到VC++生成的EXE文件夾目錄下(這個可以根據Visual Studio 的輸出提示,我沒看到,差點功虧一篑),經過這步在Visual Studio 環境下調試可以進到DLL源碼中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved