При создание листа Excle выводит исключение - C#

Узнай цену своей работы

Формулировка задачи:

Вечер добрый) Пытаюсь создать программно лист в Excel выводит исключение:
Исключения из hresult: 0x008A03EC
Программный код:
Листинг программы
  1. private Excel.Application exBase = new Excel.Application();
  2. private Excel.Workbook excBook;
  3. private Excel.Worksheet excSheet;
  4. private Excel.Range excCells;
  5. public string FileName = System.Windows.Forms.Application.StartupPath + "\\" + "Base" + ".xlsx";
  6. ....
  7. ....
  8. public void OpenExc() //открываем привязываем
  9. {
  10. excBook = exBase.Workbooks.Open(FileName, Type.Missing, false);
  11. }
  12. public void GetExc() // заполняем датагрид
  13. {
  14. OpenExc();
  15. int i, j;
  16. excSheet = (Excel.Worksheet)excBook.Sheets[1]; ;
  17. dataGridView1.ColumnCount = excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Column;
  18. dataGridView1.RowCount = excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row - 1;
  19. for (i = 0; i < dataGridView1.RowCount; i++)
  20. for (j = 0; j < dataGridView1.ColumnCount; j++)
  21. {
  22. excCells = (Excel.Range)excSheet.Cells[i + 2, j + 1];
  23. this.dataGridView1[j, i].Value = excCells.Text.ToString();
  24. }
  25. }
  26. public void CloseExc() //закрытие
  27. {
  28. excBook.Saved = true;
  29. excBook.Save();
  30. excBook.Close();
  31. exBase.Quit();
  32. excBook = null;
  33. exBase = null;
  34. excSheet = null;
  35. FileName = null;
  36. GC.Collect();
  37. }
  38. public void WorkTime() // здесь мы проверяем есть ли нужный лист, если нет то создаем
  39. {
  40. string Mon;
  41. DateTime Tm = DateTime.Now;
  42. Mon = Tm.Month.ToString();
  43. if (excBook.Sheets.Count >= (int.Parse(Mon) + 1)) //1 листе данные, так что плюсуем на 1
  44. {
  45. excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon)+1];
  46. Row=excSheet.UsedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
  47. excSheet.Cells[Row,1] = "Время работы";
  48. excSheet.Cells[Row, 2] = tEnt.Tm.ToShortTimeString() + " /" + Tm.ToShortTimeString();
  49. excSheet.Cells[Row, 3] ="ID: "+ tEnt.Nam;
  50. }
  51. else
  52. {
  53. try
  54. {
  55. excBook.Sheets.Add(Type.Missing,2,Type.Missing,Type.Missing);
  56. excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon) + 1]; // ошибка здесь
  57. excSheet.Cells[Row, 1] = "Test";
  58. }
  59. catch (Exception ex)
  60. {
  61. MessageBox.Show(ex.Message, "test");
  62. }
  63. }
  64. }
  65. private void Search_FormClosing(object sender, FormClosingEventArgs e) //WorkTime выполняется тут
  66. {
  67. if (MessageBox.Show("Закрыть? ", "Message", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
  68. e.Cancel = true;
  69. else
  70. {
  71. WorkTime();
  72. CloseExc();
  73. tEnt.Show();
  74. e.Cancel = false;
  75. }
  76. }

Решение задачи: «При создание листа Excle выводит исключение»

textual
Листинг программы
  1.  excSheet = (Excel.Worksheet)excBook.Sheets[int.Parse(Mon) + 1]; // ошибка здесь

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


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

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

14   голосов , оценка 4.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы