2

私はExcelファイルを開くためにこのコードを書きます:

    private readonly object _missing = Type.Missing;

    private IEnumerable<CellModel> GetUsedCells(string fileName)
    {
        SetNewCurrentCulture();//set "en-US" culture

        var application = new Application();
        var workbooks = application.Workbooks;
        Workbook workbook = null;

        try
        {
            workbook = workbooks
                .Open(fileName,
                      0, false, _missing, "", "",
                      true, XlPlatform.xlWindows, _missing, false, false,
                      _missing, false, false, XlCorruptLoad.xlNormalLoad
                );
        }
        finally
        {
            //realocate memory

            if(workbook != null)
            {
                ReleaseComObject(workbook);
                workbook = null;
            }

            workbooks.Close();
            ReleaseComObject(workbooks);
            workbooks = null;

            application.Quit();
            ReleaseComObject(application);
            application = null;

            GC.GetTotalMemory(false);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.GetTotalMemory(true);

            ResetCurrentCulture();//reset old culture
        }
    }

Open メソッドでこのエラーが発生しました:「HRESULT からの例外: 0x800A03EC」

ノート:

  • 私はvs2012を使用し、私のプロジェクトのターゲットフレームワークは4で、Microsoft.Office.Interop.Excelのバージョンは14.0.0.0です

  • サーバー情報: Windows Server 2008 32 ビット、IIS7、Excel 2010

  • 「C:\Windows\System32\config\systemprofile」にデスクトップ フォルダーを作成し、「ネットワーク サービス」と「ユーザー」に権限を設定します。

  • 「Microsoft Excel アプリケーション」の DCOM Config で権限を変更し、「対話型ユーザー」を選択します。

  • 「C:\Windows\Temp」の「ネットワーク サービス」と「ユーザー」に権限を設定します。

私はとても混乱しています。お願い助けて!

4

1 に答える 1

3

相互運用性は、MS によるサーバー シナリオではサポートされていません

サーバーに相互運用/Excel をインストールせずに、Excel ファイルを読み取り/編集/作成するための多くのオプションがあります。

MS は無料の OpenXML SDK V 2.0 を提供しています - http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspxを参照してください(XLSX のみ)

これは、すべての MS Office ファイル (Excel を含む) を読み書きできます。

別の無料オプションを参照してください http://www.codeproject.com/KB/office/OpenXML.aspx (XLSX のみ)

古いバージョンの Excel (XLSX だけでなく XLS など) の処理、レンダリング、PDF の作成、数式などが必要な場合は、ClosedXML (無料、XLSX のみ)、EPPlus (無料、XLSX のみ)などのさまざまな無料および商用ライブラリがあります。 、Aspose.CellsSpreadsheetGearLibXLFlexcelなど。

于 2013-05-10T17:05:25.130 に答える