Добрый день!
Вот задание по которому необходимо написать программу:
На языке C# реализовать программу, которая будет проводить корреляционный анализ результатов масштабного социологического
исследования The European Values Study 2012 года и актуальную статистику по рождаемости детей в тех же странах,
а также будет выделять наиболее яркие зависимости между общественными ценностями и показателями рождаемости детей.
Я создала форму на которой расположены следующие компоненты:
button1(открывает статистику в dataGridView),
button2(считает корреляцию),
dataGridView1(показывает статистику),
textBox1(показывает путь файла).
Вот код программы, который смогла написать(для открытия статистики):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog(); //Задаем расширение имени файла по умолчанию.
ofd.DefaultExt = "*.xls;*.xlsx"; //Задаем строку фильтра имен файлов, которая определяет
//варианты, доступные в поле "Файлы типа" диалогового
//окна.
ofd.Filter = "Excel Sheet(*.xlsx)|*.xlsx"; //Задаем заголовок диалогового окна.
ofd.Title = "Выберите документ для загрузки данных";
Excel.Application app = new Excel.Application();
Excel.Workbook workbook;
Excel.Worksheet NwSheet;
Excel.Range ShtRange;
DataTable dt = new DataTable();
if (ofd.ShowDialog() == DialogResult.OK)
{
textBox1.Text = ofd.FileName; workbook = app.Workbooks.Open(ofd.FileName, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value); //Устанавливаем номер листа из котрого будут извлекаться данные
//Листы нумеруются от 1
NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
ShtRange = NwSheet.UsedRange;
for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
{
dt.Columns.Add(new DataColumn((ShtRange.Cells[1, Cnum] as Excel.Range).Value2.ToString()));
}
dt.AcceptChanges();
string[] columnNames = new String[dt.Columns.Count];
for (int i = 0; i < dt.Columns.Count; i++)
{
columnNames[0] = dt.Columns[i].ColumnName;
}
for (int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
{
DataRow dr = dt.NewRow();
for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
{
if ((ShtRange.Cells[Rnum, Cnum] as Excel.Range).Value2 != null)
{
dr[Cnum - 1] = (ShtRange.Cells[Rnum, Cnum] as Excel.Range).Value2.ToString();
}
}
dt.Rows.Add(dr);
dt.AcceptChanges();
}
dataGridView1.DataSource = dt;
app.Quit();
}
else Application.Exit();
}
private void button2_Click(object sender, EventArgs e)
{
}
}
}
Помогите написать код для button2(считает корреляцию, т.е. при нажатии на кнопку необходимо, чтобы в ячейку "B35"
записывалась формула "=КОРРЕЛ(B2:AS2;B33:AS33)" и все изменения в Excel должны быть отображены в dataGridView1).