как экспортировать все данные из datagrid в excel

Есть код который экспортирует данные в Excel, но проблема в том что он передает не все данные и программа выдает ошибку "Ссылка на объект не указывает на экземпляр объекта"

private void toExcel_Click(object sender, RoutedEventArgs e)
        {
            Excel.Application ExcelApp = new Excel.Application();
            ExcelApp.Application.Workbooks.Add(Type.Missing);
            ExcelApp.Cells[1, 1] = "Дата";
            ExcelApp.Cells[1, 2] = "Заряд";
            ExcelApp.Cells[1, 3] = "t1°";
            ExcelApp.Cells[1, 4] = "t2°";
            ExcelApp.Cells[1, 5] = "t3°";
            ExcelApp.Cells[1, 6] = "t4°";
            ExcelApp.Cells[1, 7] = "t5°";
            ExcelApp.Cells[1, 8] = "t6°";
            ExcelApp.Cells[1, 9] = "t7°";
            ExcelApp.Cells[1, 10] = "t8°";
            ExcelApp.Cells[1, 11] = "t9°";
            ExcelApp.Cells[1, 12] = "t10°";
            ExcelApp.Visible = true;

            for (int j = 0; j < TemperDataGrid.Columns.Count; j++)
            {
                for (int i = 0; i < TemperDataGrid.Items.Count; i++)
                {
                    TextBlock text = TemperDataGrid.Columns[j].GetCellContent(TemperDataGrid.Items[i]) as TextBlock;
                    Excel.Range range = ExcelApp.Cells[i + 1, j + 1];
                    range.Value = text.Text; //здесь выходит ошибка
                }
            }
            
        }

Данные в Datagrid при прокручивании данные есть введите сюда описание изображения

но при экспорте в excel записываются только видимые значения введите сюда описание изображения


Ответы (1 шт):

Автор решения: Gink

Как и сказал aepot стоило обращаться напрямую к данным

 private void toExcel_Click(object sender, RoutedEventArgs e)
        {
            Excel.Application ExcelApp = new Excel.Application();
            ExcelApp.Application.Workbooks.Add(Type.Missing);
            for (int i = 0; i<stockList.Count; i++)
            {
                ExcelApp.Cells[i + 1, 1] = stockList[i].date;
                ExcelApp.Cells[i + 1, 2] = stockList[i].bat;
            }
            ExcelApp.Visible = true;
        }
→ Ссылка