在.net EF应用程序中,Microsoft.Office.Interop.Excel.Workbooks.Open()仅在调试模式下工作

时间:2013-12-11 15:30:20

标签: c# .net excel entity-framework

当用户点击网页中的按钮时,我想打开一个Excel文件。 但它只在我在VS2010中调试我的代码时才起作用。当我打开网页并单击按钮时,它返回错误:

Microsoft Excel无法访问文件“K:\ report_SYY_per_month.xlsx”。有几个可能的原因:

•文件名或路径不存在。

•该文件正由另一个程序使用。

•您尝试保存的工作簿与当前打开的工作簿具有相同的名称。   描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的起源位置的更多信息...

我目前使用的代码是这个(当然不是最终的......):

protected void ReportButton_Click(object sender, EventArgs e)
        {
            string path = @"K:\report_SYY_per_month.xlsx";

        var excel = new Excel.Application();
        excel.Visible = true;
        //excel.UserControl = true;

        System.Globalization.CultureInfo CI = System.Threading.Thread.CurrentThread.CurrentCulture;

        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

        Excel.Workbooks wbooks = excel.Workbooks;


        Excel.Workbook wBook = wbooks.Open(path,
            0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
            true, false, 0, true, false, false);

        Excel.Sheets sheets = wBook.Worksheets;

        string currentSheet = "per_month";
        Excel.Worksheet excelWorksheet = (Excel.Worksheet)sheets.get_Item(currentSheet);

        Excel.Range excelCell = (Excel.Range)excelWorksheet.get_Range("A1", "A1");



        wbooks.Close();
        excel.Quit();

        GC.Collect();
        GC.WaitForPendingFinalizers();

        System.Threading.Thread.CurrentThread.CurrentCulture = CI;
    }

0 个答案:

没有答案