source

Microsoft 의 사용법.Office.Interop.MS Office가 설치되지 않은 머신에서 뛰어난 성능을 발휘하시겠습니까?

nicesource 2023. 4. 19. 23:13
반응형

Microsoft 의 사용법.Office.Interop.MS Office가 설치되지 않은 머신에서 뛰어난 성능을 발휘하시겠습니까?

엑셀 파일로 작동하는 어플을 쓰고 있어요.시트를 삭제하는 기능이 필요합니다.조립형 Microsoft를 사용해야 합니다.Office.Interop.Excel.dll.

디벨로퍼 머신에서는 정상적으로 동작하고 있습니다만, 서버에 전개하려고 하면, 다음의 에러가 발생합니다.

파일 또는 어셈블리 'office, Version=14.0.0.0, Culture=중립, PublicKey'를 로드할 수 없습니다.토큰=71e9bce111e9429c' 또는 그 종속성 중 하나

MS Office가 컴퓨터에 설치되어 있지 않을 때 문제가 발생한다는 것을 알고 있습니다.고객은 MS Office를 서버에 설치 및 구입하고 싶지 않습니다.

여기 http://forums.asp.net/t/1530230.aspx/1의 조언에 따라 개발자 머신에 "Redistributable Primary Interop Assembly"를 설치하고 프로젝트를 다시 컴파일합니다.

코드 샘플:

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;
}

예외

CLSID {00024500-0000-0000-C000-000000000046} 구성 요소의 COM 클래스 팩토리 검색에 실패했습니다. 80040154 클래스가 등록되지 않았습니다(HRESULT: 0x80040154(REGDB_E_CLASSNOTREG) 예외).

회선상에서 발생하다

app = new Excel.Application();

이 기능을 정상적으로 동작시키는 방법에 대해 조언해 주실 수 있습니까?

Microsoft 를 사용할 수 없습니다.Office.Interop.ms office를 설치하지 않고 Excel을 실행할 수 있습니다.

xls 또는 xlsx를 수정할 수 있는 라이브러리를 구글에서 검색하기만 하면 됩니다.

"고객이 MS Office를 어떠한 가격도 지불하지 않고 서버에 설치하고 구입하고 싶지 않은 경우" Excel을 사용할 수 없습니다.하지만 요령을 알 수 없습니다.이것은 모두 하나의 기본적인 Office 라이선스에 관한 것으로, 가격은 약 150달러입니다.그리고 나는 대안을 찾는 데 시간을 보내는 것이 이 양보다 훨씬 더 많은 비용이 들 것이라고 생각해!

서비스를 만들고 서버에서 Excel을 생성한 후 클라이언트가 Excel을 다운로드할 수 있도록 할 수 있습니다.엑셀 라이선스를 1000ppl에 구입하기 때문에 서버 라이선스를 1개 가지고 있는 것이 좋습니다.

도움이 됐으면 좋겠네요

GS Pread를 찾습니다.NET. Microsoft Excel의 API를 사용하여 Google 스프레드시트로 작업할 수 있습니다.새로운 Google API를 사용하여 오래된 코드를 다시 쓸 필요가 없습니다.몇 개의 행만 추가합니다.

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

app.MailLogon(Name, ClientIdAndSecret, ScriptId);

OpenSource 프로젝트이므로 Office를 설치할 필요가 없습니다.

매뉴얼은 http://scand.com/products/gspread/index.html 에서 구할 수 있습니다.

언급URL : https://stackoverflow.com/questions/11448197/how-to-use-microsoft-office-interop-excel-on-a-machine-without-installed-ms-offi

반응형