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