0

最初にSSRSレポートを取得し、Excelに書き込んでサーバー上のフォルダーに保存し、コードを介して同じExcelを操作してから再度保存し、Excelでレンダリングしてダウンロードするコードを作成しました。コードは正常に機能していましたが、突然エラーが発生し始めました。

'G:\TestEnvironment\ TestSite_ForDeveloper\ Reports\10697696.xls'ファイルが別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。

問題は何ですか?

使用されるコードは次のとおりです。

//Getting SSRS report

//code

//Saving SSRS report result in excel
try
{
    Microsoft.Office.Interop.Excel.Workbook workbook;
    Microsoft.Office.Interop.Excel.Worksheet NwSheet;

    appExl = new Microsoft.Office.Interop.Excel.Application();
    string serverPath = Server.MapPath(".");

    string filenameToLoad = serverPath + "\\Page1Reports\\" + Session["UserAccentureID"].ToString() + ".xls";

    FileStream fileStream = new FileStream(filenameToLoad, FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
    fileStream.Write(result, 0, result.Length);
    fileStream.Close();

    //Manipulation of file

    //Done something

    workbook.Save();
    workbook.Close();
    appExl.Quit();

    System.IO.FileInfo file = new System.IO.FileInfo(filenameToLoad);

    //Rendering again to excel download
    if (file.Exists)
    {
        string lblrptname = "Page1SLScoreCardReport_" + ddlFiscalWeek.SelectedValue.ToString();
        Response.Clear();
        Response.ClearHeaders();
        Response.Charset = "";
        Response.ContentType = "Application/vnd.xls";
        Response.AddHeader("content-disposition", "attachment;filename=" + lblrptname + ".xls");
        Response.AddHeader("Cache-Control", "max-age=0");
        Response.WriteFile(file.FullName);
    }
}
catch (Exception ex)
{
    AlnErrorHandler.HandleError(ex);
}
finally
{ 
    if (appExl != null )
     appExl.Quit();
}
4

1 に答える 1

0

タスク マネージャーの [プロセス] をチェックして、余分な EXCEL.EXE プロセスが実行されているかどうかを確認してください。Excelはバックグラウンドで実行され、適切に終了しないとファイルを保持し、あらゆる種類の混乱を引き起こします(少なくとも私にとってはそうでした;))。

于 2013-06-10T17:32:54.077 に答える