मैं जो करने का प्रयास कर रहा हूं वह है VSTO के सी # "एक्सेल 2007 एड-इन" -प्रोजेक्ट प्रकार का उपयोग कर एक्सेल के लिए उपयोगकर्ता परिभाषित फ़ंक्शन (यूडीएफ) बनाना (क्योंकि मैं बस कुछ सामान्य यूडीएफ उत्पन्न करना चाहते हैं)। मैं केवल (इस स्तर किसी भी तरह से) मूल बातें जानने के लिए कोशिश कर रहा हूँ के रूप में इस तरह मेरे कोड दिखता है:VSTO ऐड-इन प्रोजेक्ट के साथ आसानी से एक्सेल यूडीएफ कैसे बनाएं
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Tools.Excel.Extensions;
using System.Runtime.InteropServices;
namespace ExcelAddIn1
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{}
//My UDF
public static double HeronicCal(int a, int b, int c)
{
//first compute S = (a+b+c)/2
double S = (a + b + c)/2;
double area = Math.Sqrt(S * (S - a) * (S - b) * (S - c));
return area;
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
यह ठीक संकलित, और जब मैं इसे चलाने, एक्सेल एक ताजा स्प्रेडशीट के साथ पॉप अप होता है, और जब मैं "ऐड-इन्स" सूची (एक्सेल विकल्पों में) देखता हूं, मैं सूची में अपना ऐड-इन देख सकता हूं (जो "स्टार्टअप पर लोड" पर सेट है। लेकिन यहां मेरी समस्या आती है, जब मैं अपने यूडीएफ को एक्सेल में कॉल करने का प्रयास करता हूं, तो Excel को विधि नहीं मिल सकती है!
जो मैं कल्पना करता हूं वह गलत है, यह है कि मुझे अपनी विधि को एक्सेल यूडीएफ (स्क्वायर ब्रैकेट्स का उपयोग करके टैग करना है - उदाहरण के लिए वेब सर्विसेज कोडिंग करते समय -> "[वेब सेवा]")। लेकिन मैं इस टैग को ट्रैक करने में सक्षम नहीं हूं (और जब से मेरा हंच सही है तो मुझे यकीन नहीं है), इसलिए मैंने यहां आपको ठीक लोगों के पास जाने का फैसला किया है।
तो मेरा प्रश्न मूल रूप से है - जहां से मैं अपने कोड के साथ हूं, क्या मेरे यूडीएफ एक्सेल के लिए सुलभ बनाने का कोई आसान तरीका है? यदि हां, तो कैसे?
मैं वास्तव में वीएसटीओ प्रोजेक्ट-प्रकार (ऐड-इन, वर्कबुक, टेम्पलेट) के भीतर रहना चाहता हूं, क्योंकि मेरी वर्तमान परियोजना के लिए मेरा समग्र लक्ष्य यह स्थापित करना है कि VS2010/Excel2007 के साथ सी # यूडीएफ निष्पादन एक पर काम करता है या नहीं स्वीकार्य गति। इसका परीक्षण करने के लिए मैं विंडोज 7 आरसी और वीएस -2010 बीटा 1 के साथ काम कर रहा हूं।
यह उत्तर IMHO ऊपर होना चाहिए। कोई 3 डी पार्टी पुस्तकालय और बहुत कम बॉयलरप्लेट बड़े पेशेवर हैं। – Sebastiaan