Как устранить исключение из исключения проблемы дискового пространства при записи в файл excel на языке C#?
Я получаю приведенное ниже исключение при записи в файл excel на языке c# при развертывании на сервере.Локально никакой проблемы как таковой нет.
Исключение:
Microsoft Excel не может открыть или сохранить больше документов, потому что не хватает доступной памяти или дискового пространства.
Чтобы освободить больше памяти, закройте книги или программы, которые вам больше не нужны.
• Чтобы освободить место на диске, удалите ненужные файлы с сохраняемого диска.
Что я уже пробовал:
Основной код выглядит следующим образом:
_Application xlApp = new Microsoft.Office.Interop.Excel.Application(); object misValue = System.Reflection.Missing.Value; _Workbook xlWorkBook = null; _Worksheet xlWorkSheet = null; string strFileName = string.Empty; try { string ExcelTemplateFullPath = string.Empty; string ExcelExtension = string.Empty; string DestinationFullPathExcel = string.Empty; if (File.Exists(templatePath + "CustomerTemplate" + ".xls")) { Logger.Log("Started generating .xls File ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); ExcelExtension = ".xls"; ExcelTemplateFullPath = templatePath + "CustomerTemplate" + ExcelExtension; strFileName = filename + ExcelExtension; DestinationFullPathExcel = DestinationPDFPath + strFileName; } else if (File.Exists(templatePath + "CustomerTemplate" + ".xlsx")) { Logger.Log("Started generating .xlsx File ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); ExcelExtension = ".xlsx"; ExcelTemplateFullPath = templatePath + "CustomerTemplate" + ExcelExtension; strFileName = filename + ExcelExtension; DestinationFullPathExcel = DestinationPDFPath + strFileName; } else { Logger.Log("Template doesn't exists in the Folder: " + templatePath, LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); return strFileName; } xlApp.DisplayAlerts = false; //object misValue = System.Reflection.Missing.Value; // _Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkBook = xlApp.Workbooks.Add(misValue); Logger.Log("Started excel Template ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); //xlWorkBook = xlApp.Workbooks.Open(ExcelTemplateFullPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); try { xlWorkBook = xlApp.Workbooks.Add(ExcelTemplateFullPath); } catch(Exception ex) { Logger.Log("Failed to open ExcelTemplate ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); Logger.Log(ex, LogFilename.ServiceLog, 1, MethodInfo.GetCurrentMethod().Name, false); } Logger.Log("Opened excel Template ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); // _Worksheet xlWorkSheet = (_Worksheet)xlWorkBook.Worksheets.get_Item(1); try { xlWorkSheet = (_Worksheet)xlWorkBook.Worksheets.get_Item(1); for (int i = 0; i < Values.Length; i++) { string[] val = Values[i].Split(delimiter1); for (int j = 0; j < val.Length; j++) { int k = 0; k = i + 1; //xlWorkSheet.Cells[k + 1, j + 1] = "'" + val[j]; xlWorkSheet.Cells[k + 1, j + 1] = val[j]; } } } catch (Exception ex) { Logger.Log("Failed to extract ExcelTemplate ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); Logger.Log(ex, LogFilename.ServiceLog, 1, MethodInfo.GetCurrentMethod().Name, false); } Logger.Log("Extracted excel Template ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); try { xlWorkBook.SaveAs(DestinationFullPathExcel, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, false, Type.Missing, XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } catch (Exception ex) { Logger.Log("Failed to save generated ExcelTemplate ", LogFilename.ServiceLog, 3, MethodInfo.GetCurrentMethod().Name); Logger.Log(ex, LogFilename.ServiceLog, 1, MethodInfo.GetCurrentMethod().Name, false); } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } catch (Exception ex) { xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); throw (ex); } return strFileName;
lw@zi
Это происходит постоянно или периодически? Возможно, вам следует проверить работоспособность сервиса на предмет того, сколько процессов запущено на нем и сколько ресурсов доступно.