При создание листа Excle выводит исключение - C#
Формулировка задачи:
Вечер добрый)
Пытаюсь создать программно лист в Excel выводит исключение:
Программный код:
Исключения из hresult: 0x008A03EC
private Excel.Application exBase = new Excel.Application(); private Excel.Workbook excBook; private Excel.Worksheet excSheet; private Excel.Range excCells; public string FileName = System.Windows.Forms.Application.StartupPath + "\\" + "Base" + ".xlsx"; .... .... public void OpenExc() //открываем привязываем { excBook = exBase.Workbooks.Open(FileName, Type.Missing, false); } public void GetExc() // заполняем датагрид { OpenExc(); int i, j; excSheet = (Excel.Worksheet)excBook.Sheets[1]; ; dataGridView1.ColumnCount = excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Column; dataGridView1.RowCount = excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row - 1; for (i = 0; i < dataGridView1.RowCount; i++) for (j = 0; j < dataGridView1.ColumnCount; j++) { excCells = (Excel.Range)excSheet.Cells[i + 2, j + 1]; this.dataGridView1[j, i].Value = excCells.Text.ToString(); } } public void CloseExc() //закрытие { excBook.Saved = true; excBook.Save(); excBook.Close(); exBase.Quit(); excBook = null; exBase = null; excSheet = null; FileName = null; GC.Collect(); } public void WorkTime() // здесь мы проверяем есть ли нужный лист, если нет то создаем { string Mon; DateTime Tm = DateTime.Now; Mon = Tm.Month.ToString(); if (excBook.Sheets.Count >= (int.Parse(Mon) + 1)) //1 листе данные, так что плюсуем на 1 { excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon)+1]; Row=excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; excSheet.Cells[Row,1] = "Время работы"; excSheet.Cells[Row, 2] = tEnt.Tm.ToShortTimeString() + " /" + Tm.ToShortTimeString(); excSheet.Cells[Row, 3] ="ID: "+ tEnt.Nam; } else { try { excBook.Sheets.Add(Type.Missing,2,Type.Missing,Type.Missing); excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon) + 1]; // ошибка здесь excSheet.Cells[Row, 1] = "Test"; } catch (Exception ex) { MessageBox.Show(ex.Message, "test"); } } } private void Search_FormClosing(object sender, FormClosingEventArgs e) //WorkTime выполняется тут { if (MessageBox.Show("Закрыть? ", "Message", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No) e.Cancel = true; else { WorkTime(); CloseExc(); tEnt.Show(); e.Cancel = false; } }
Решение задачи: «При создание листа Excle выводит исключение»
textual
Листинг программы
excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon) + 1]; // ошибка здесь
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д