При создание листа 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]; // ошибка здесь

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.571 из 5
Похожие ответы