1

C# (VS2010 プロフェッショナル) コードを使用して Excel ファイル (.xlsx) を開こうとしています。以下のコードの最後の 2 行を実行/シングル ステップ実行すると、(私には追跡不可能な) 例外が発生します。以下は、既存のExcelファイルを開くための私のコードです。

        string tesfile = "C:\\Users\\AWaheed3\\Desktop\\1.xlsx";
        Microsoft.Office.Interop.Excel.Application xlApp;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        object misValue = System.Reflection.Missing.Value;
        xlApp = new Microsoft.Office.Interop.Excel.Application();
        xlApp.Visible = true;
        xlWorkBook = xlApp.Workbooks.Open(tesfile, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);   

また、コードの先頭に以下の行を含めました。さらに、Microsoft.Office.Interop.Excel の参照を Project->Add Reference (.NET タブ) から追加しました。

 using Microsoft.Office.Interop.Excel;

私のコードが失敗したりエラーをスローしたりする理由を誰かアドバイスできますか?

よろしくアサド

編集済み* * ** * ** * ** * ** * ** * ** * ** * ** * *

これが私が受け取っているメッセージ/エラーです。xlApp.Visible = ture 行を実行している間も、コードが失敗していることに注意してください。エラーは

タイプ 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス タイプ 'Microsoft.Office.Interop.Excel._Application' にキャストできません。IID '{000208D5-0000-0000-C000-000000000046}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーにより失敗したため、この操作は失敗しました: ライブラリが登録されていません。(HRESULT からの例外: 0x8002801D (TYPE_E_LIBNOTREGISTERED))。


4

1 に答える 1

0

二重のバックスラッシュを削除して、代わりに \ と書くか、次のようにします。

Microsoft.Office.Interop.Excel.Application excel = null;
Microsoft.Office.Interop.Excel.Workbook xls = null;
try
{
     excel = new Microsoft.Office.Interop.Excel.Application();
     object missing = Type.Missing;
     object trueObject = true;
     try
     {
          excel.Visible = false; // or true
          excel.DisplayAlerts = false;
     }
     catch(Exception e)
     {
                Console.WriteLine("-------Error hiding the application-------");
                Console.WriteLine("Occured error might be: " + e.StackTrace);
     }
     xls = excel.Workbooks.Open(excelFile, missing, trueObject,    missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
     //xls = excel.Workbooks.Open(@"file.xls", missing, trueObject,    missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
}
catch (Exception ex)
{
            MessageBox.Show("Error accessing Excel document.\n\n" +
            ex.Message);
}
// Must be surrounded by try catch to work.
// http://naimishpandya.wordpress.com/2010/12/31/hide-power-point-application-window-in-net-office-automation/

@ はパスの問題を取り除きます。もちろん、コードはあなたのものに似ています。ただ、別の方法で書き直しています。System.Reflection を探してください。代わりに System.Type を使用しています。また、今後のアドバイスとして、COM ファイルを使用する場合は、最後に正しく閉じるようにしてください。**編集済み。

于 2013-06-04T08:07:00.953 に答える