Member 13782165 Ответов: 1

Как я могу импортировать пять файлов excel в C# и выполнять некоторые математические операции, такие как умножение матриц между ними?


Привет У меня есть пять матриц (размером 40х30 ) в одном файле excel и отдельный лист. я импортирую их в c# как DataTable, и теперь я хочу сделать какую-то математическую операцию, такую как матричное умножение между этими DataTables(я имею в виду DataTable1*DataTable2*DataTable3... ). я знаю, что делать что-то подобное на Datatable, возможно, очень долго и скучно или невозможно.
каков наилучший способ для меня?
спасибо.

Что я уже пробовал:

private void btnLoadExcel_Click(object sender, EventArgs e)
        {
            string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";   

            OleDbConnection conn = new OleDbConnection(connstring);
            OleDbDataAdapter ada1 = new OleDbDataAdapter("Select * from [" + "Sheet1" + "$]", conn);
            OleDbDataAdapter ada2 = new OleDbDataAdapter("Select * from [" + "Sheet2" + "$]", conn);
            OleDbDataAdapter ada3 = new OleDbDataAdapter("Select * from [" + "Sheet3" + "$]", conn);
            OleDbDataAdapter ada4 = new OleDbDataAdapter("Select * from [" + "Sheet4" + "$]", conn);
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            DataTable dt3 = new DataTable();
            DataTable dt4 = new DataTable();
            ada1.Fill(dt1);
            ada2.Fill(dt2);
            ada3.Fill(dt3);
            ada4.Fill(dt4);

Maciej Los

Выглядит и звучит странно...
Можете ли вы поделиться образцами данных и объяснить, чего вы хотите достичь?

Member 13782165

например, у меня есть три матрицы(max1 max2 max3) в excel. я хочу умножить эти матрицы вместе в c#(max1*max2*max3). из-за этого размер матриц настолько велик, что я не могу войти в них вручную. я импортирую эти матрицы в c# как три DataTable, но теперь я не знаю, как умножить эти матрицы вместе. если бы формат matrixs был двойным[,] у меня нет никаких проблем, но теперь с DataTable я не знаю.

1 Ответов

Рейтинг:
0

#realJSOP

Пару недель назад я написал статью, в которой содержится код, позволяющий импортировать файлы Excel и CSV в DataTable Вы должны быть в состоянии легко использовать код в вашем проекте .

CSV/Excel File Parser - A Revisit[^]


Member 13782165

спасибо за ваш ответ
Я уже импортировал данные excel как DataTable, теперь я хочу сделать матричное умножение между двумя отдельными DataTable. Я видел вашу статью, но не видел ничего подобного.

#realJSOP

Ааа. Я думал, у вас возникли проблемы с импортом файлов. Вы недостаточно описали проблему, касающуюся любого вида математики, которую необходимо выполнить.

#realJSOP

Для математической части вам, вероятно, придется ссылаться на каждую желаемую строку/столбец в объектах datatable. Если бы это был я, я бы переместил данные из таблиц данных в соответствующие коллекции объектов, чтобы вам было легче использовать Linq для выполнения нужных математических операций.

Member 13782165

я не понимаю, что вы имеете в виду? я буду благодарен, если вы приведете пример.
спасибо

#realJSOP

Вы не предоставили схему для таблиц данных, а также не указали, какой столбец в схеме использовать для вычислений.

Статья, которую я процитировал, также включает демонстрационный код, который показывает, как общий метод получения данных строки/столбца из datatable.

Я предполагаю, что вы знаете о методе Matrix.Multiply ()...