c# MS. Office के बिना किसी मशीन पर Microsoft.Office.Interop.Excel का उपयोग कैसे करें?




dll (4)

आप एक सेवा बना सकते हैं और सर्वर पर एक्सेल उत्पन्न कर सकते हैं और फिर क्लाइंट को एक्सेल डाउनलोड कर सकते हैं। 1000 पीपीएल के लिए एक्सेल लाइसेंस खरीदने के लिए, सर्वर के लिए एक लाइसेंस होना बेहतर है।

उम्मीद है की वो मदद करदे।

मैं एक एप्लीकेशन लिख रहा हूं जो एक्सेल फाइलों के साथ काम करता है। मुझे चादर हटाने के लिए एक सुविधा चाहिए। मुझे एक असेंबली माइक्रोसॉफ्ट.ऑफिस.इंटरोप.एक्ससेल.dll का उपयोग करना होगा।

यह डेवलपर मशीन पर ठीक चल रहा है लेकिन जब मैं इसे सर्वर पर तैनात करने का प्रयास करता हूं तो मुझे एक त्रुटि मिल रही है:

फ़ाइल या असेंबली 'कार्यालय, संस्करण = 14.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 71e9bce111e9429c' या इसकी निर्भरताओं में से कोई लोड नहीं हो सका

मैं समझता हूं कि समस्या तब होती है जब मशीन पर एमएस ऑफिस स्थापित नहीं होता है। ग्राहक किसी भी कीमत पर किसी सर्वर पर एमएस ऑफिस को स्थापित और खरीदना नहीं चाहता है।

मैं डेवलपर मशीन पर "पुनर्वितरण योग्य प्राथमिक इंटरऑप असेंबली" स्थापित करता हूं जैसा कि यहां सलाह दी गई है: http://forums.asp.net/t/1530230.aspx/1 और मेरी परियोजना को दोबारा संकलित करें।

कोड नमूना:

public bool DeleteSheet(string tableName)
{
    Excel.Application app = null;
    Excel.Workbooks wbks = null;
    Excel._Workbook _wbk = null;
    Excel.Sheets shs = null;

    bool found = false;

    try
    {
        app = new Excel.Application();
        app.Visible = false;
        app.DisplayAlerts = false;
        app.AlertBeforeOverwriting = false;

        wbks = app.Workbooks;
        _wbk = wbks.Add(xlsfile);
        shs = _wbk.Sheets;
        int nSheets = shs.Count;

        for (int i = 1; i <= nSheets; i++)
        {
            Excel._Worksheet _iSheet = (Excel._Worksheet)shs.get_Item(i);
            if (_iSheet.Name == tableName)
            {
                _iSheet.Delete();
                found = true;

                Marshal.ReleaseComObject(_iSheet);
                break;
            }
            Marshal.ReleaseComObject(_iSheet);
        }

        if (!found)
            throw new Exception(string.Format("Table \"{0}\" was't found", tableName));

        _wbk.SaveAs(connect, _wbk.FileFormat, Missing.Value, Missing.Value, Missing.Value,
        Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    }
    finally
    {
        _wbk.Close(null, null, null);
        wbks.Close();
        app.Quit();

        Marshal.ReleaseComObject(shs);
        Marshal.ReleaseComObject(_wbk);
        Marshal.ReleaseComObject(wbks);
        Marshal.ReleaseComObject(app);
    }
    return true;
}

एक अपवाद

सीएलएसआईडी {00024500-0000-0000-C000-000000000046} के साथ घटक के लिए COM क्लास फैक्ट्री को पुनर्प्राप्त करना निम्न त्रुटि के कारण विफल रहा: 80040154 क्लास पंजीकृत नहीं है (HRESULT से अपवाद: 0x80040154 (REGDB_E_CLASSNOTREG))।

लाइन पर होता है

app = new Excel.Application();

क्या कोई इस सलाह को सफलतापूर्वक काम करने के बारे में सलाह दे सकता है?


GSpread.NET की तलाश करें। आप माइक्रोसॉफ्ट एक्सेल से एपीआई का उपयोग कर Google स्प्रेडशीट्स के साथ काम कर सकते हैं। आपको नए Google एपीआई उपयोग के साथ पुराने कोड को फिर से लिखने की आवश्यकता नहीं है। बस कुछ पंक्ति जोड़ें:

Set objExcel = CreateObject("GSpreadCOM.Application");

app.MailLogon(Name, ClientIdAndSecret, ScriptId);

यह एक ओपनसोर्स प्रोजेक्ट है और इसे कार्यालय स्थापित करने की आवश्यकता नहीं है।

दस्तावेज यहां उपलब्ध है http://scand.com/products/gspread/index.html


आप MS. Office स्थापित किए बिना Microsoft.Office.Interop.Excel का उपयोग नहीं कर सकते हैं।

बस कुछ पुस्तकालयों के लिए Google में खोजें, जो xls या xlsx को संशोधित करने की अनुमति देता है:


यदि "ग्राहक किसी भी कीमत पर किसी सर्वर पर एमएस ऑफिस को स्थापित और खरीदना नहीं चाहता है", तो आप Excel का उपयोग नहीं कर सकते ... लेकिन मुझे चाल नहीं मिल सकती है: यह लगभग एक मूल कार्यालय लाइसेंस है जो 150 की तरह कुछ खर्च करता है अमरीकी डालर ... और मुझे लगता है कि एक विकल्प खोजने में व्यतीत करने का समय इस राशि से कहीं अधिक होगा!







interop