これは機能していました。そして、破棄コードをfinallyブロックに移動しましたが、今では毎回失敗します。
4レコード、6列の長さのテストスプレッドシートがあります。これが私がそれを持ち込むために使用しているコードです。これはIIS5(私のPC)とIIS 6(Webサーバー)上のASP.Net3.5です。
キャッチの直前の行で爆発します: "values =(object [、])range.Value2;" 次のエラーが発生します。
11/2/2009 8:47:43 AM :: Not enough storage is available to complete this operation. (Exception from HRESULT: 0x8007000E (E_OUTOFMEMORY))
何か案は?提案?私はこのコードのほとんどをcodeprojectから取得したので、これがExcelを操作する正しい方法であるかどうかはわかりません。あなたが提供できるどんな助けにも感謝します。
これが私のコードです:
Excel.ApplicationClass app = null; Excel.Workbook book = null; Excel.Worksheet sheet = null; Excel.Range range = null; object [、]値= null; 試す {{ //Excelを構成します app = new Excel.ApplicationClass(); app.Visible = false; app.ScreenUpdating = false; app.DisplayAlerts = false; //アップロードされたファイルでExcelの新しいインスタンスを開きます book = app.Workbooks.Open(path); //本の最初のワークシートを取得します sheet =(Excel.Worksheet)book.Worksheets [1]; //2行目の最初のセルから開始 range = sheet.get_Range( "A2"、Missing.Value); //すべてのセルを右側に配置します range = range.get_End(Excel.XlDirection.xlToRight); //すべてのセルを下向きにします range = range.get_End(Excel.XlDirection.xlDown); //右下のセルのアドレスを取得します string downAddress = range.get_Address(false、false、Excel.XlReferenceStyle.xlA1、Type.Missing、Type.Missing); //完全な範囲のデータを取得します range = sheet.get_Range( "A2"、downAddress); //すべてのデータの2D配列を取得します 値=(object [、])range.Value2; } キャッチ(例外e) {{ LoggingService.log(e.Message); } ついに {{ // 掃除 範囲=null; シート=null; if(book!= null) book.Close(false、Missing.Value、Missing.Value); 本=null; if(app!= null) app.Quit(); app = null; } 戻り値;