Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.Net文件流IO异常:无法访问该文件,因为另一个进程正在使用该进程_C#_Asp.net_Excel_Io_Filestream - Fatal编程技术网

C# Asp.Net文件流IO异常:无法访问该文件,因为另一个进程正在使用该进程

C# Asp.Net文件流IO异常:无法访问该文件,因为另一个进程正在使用该进程,c#,asp.net,excel,io,filestream,C#,Asp.net,Excel,Io,Filestream,我的一个Asp.Net应用程序有问题。我正在使用一个数据表创建一个excel文件。以下是相关功能: public static void ExportToExcel(System.Data.DataTable Tbl, string ExcelFilePath) { try { if (Tbl == null || Tbl.Columns.Count == 0)

我的一个Asp.Net应用程序有问题。我正在使用一个数据表创建一个excel文件。以下是相关功能:

public static void ExportToExcel(System.Data.DataTable Tbl, string ExcelFilePath)
        {
            try
            {
                if (Tbl == null || Tbl.Columns.Count == 0)
                    throw new Exception("ExportToExcel: Null or empty input table!\n");

                // load excel, and create a new workbook
                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
                excelApp.Workbooks.Add();

                // single worksheet
                Microsoft.Office.Interop.Excel._Worksheet workSheet = excelApp.ActiveSheet;

                // column headings
                for (int i = 0; i < Tbl.Columns.Count; i++)
                {
                    workSheet.Cells[1, (i + 1)] = Tbl.Columns[i].ColumnName;
                }

                // rows
                for (int i = 0; i < Tbl.Rows.Count; i++)
                {
                    // to do: format datetime values before printing
                    for (int j = 0; j < Tbl.Columns.Count; j++)
                    {
                        workSheet.Cells[(i + 2), (j + 1)] = Tbl.Rows[i][j];
                    }
                }

                // check fielpath
                if (ExcelFilePath != null && ExcelFilePath != "")
                {
                    try
                    {
                        workSheet.SaveAs(ExcelFilePath);
                        excelApp.Quit();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("ExportToExcel: Excel file could not be saved! Check filepath.\n"
                            + ex.Message);
                    }
                }
                else    // no filepath is given
                {
                    excelApp.Visible = true;
                }
            }
            catch (Exception ex)
            {
                throw new Exception("ExportToExcel: \n" + ex.Message);
            }
        } 
这两个功能由我网页上的一个按钮控制

当代码行到达代码行时

fs.Read(buffer, 0, (int)fs.Length);
我得到一个例外:

用户代码未处理IO异常:无法访问该文件,因为该进程正被另一个进程使用

我不明白问题的原因。因为我正在保存并关闭文件。在任务管理器上,我看不到关于excel文件的任务。当我在函数行上获得一个断点并逐行执行代码时,异常没有被处理

那么问题出在哪里呢?

在您的情况下,您可能会发现一个孤立的Excel进程正在运行,并且工作簿处于打开状态

我建议您使用第三方组件(如EPPlus或Aspose)来创建工作簿

fs.Read(buffer, 0, (int)fs.Length);