запись диапазона Excel в исключение приведения типа целого массива - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь заполнить целочисленный массив из файла Excel, но получаю это исключение; "не могу неявно преобразовать объект типа [, ] в int [, ]"

Я попытался (int), и я получил сообщение «неявно преобразует тип int в int [, ]».Я получаю ошибку для последних двух строк.

string path = "";
_Application excel = new _Excel.Application();
Workbook wrkbk;
Worksheet wrksht;
int xlRow;
int xlCol;
public int[,] inputs = new int[9,683];
public int[,] outputs = new int[1,683];
public Excel(string path, int sheet)
{
    this.path = path;
    wrkbk = excel.Workbooks.Open(path);
    wrksht = excel.Worksheets[sheet];
    xlRow = wrksht.UsedRange.Rows.Count;
    xlCol = wrksht.UsedRange.Columns.Count;
    inputs = wrksht.Range[wrksht.Cells[1][1], wrksht.Cells[xlRow][xlCol - 1]].Cells.Value2;
    outputs = wrksht.Range[wrksht.Cells[1][xlCol], wrksht.Cells[xlRow][xlCol]].Cells.Value2;

1 Ответ

0 голосов
/ 15 мая 2018

РЕДАКТИРОВАТЬ Вам необходимо скачать EPPLUS .Эту библиотеку можно установить через менеджер пакетов NuGet.Он очень прост в использовании.

Данные, на которых я его использовал:

Вывод (AKA-визуализация двумерного массива, созданного с использованием данных Excel):

 using OfficeOpenXml;
 using System.Collections.Generic;
 using System.IO;

namespace equals
{
    class Program
    {
        public static void Main()
        {
            try
            {
                FileInfo newfile = new FileInfo(@"C:\Users\Evan\Desktop\new.xlsx");
                ExcelPackage pkg = new ExcelPackage(newfile);
                ExcelWorksheet wrksheet = pkg.Workbook.Worksheets[0];
                var lastRow = wrksheet.Dimension.End.Row;
                ExcelRange rng = wrksheet.Cells[1, 1, lastRow, 2];
                System.Console.WriteLine(rng.Address);

                List<int> valuesInRange = new List<int>();
                int cellValue;

                foreach (var cell in rng)
                {
                    cellValue = System.Convert.ToInt32(cell.Value);
                    if (cellValue != 0)
                    {
                        valuesInRange.Add(cellValue);
                    }
                }

                int countOfList = valuesInRange.Count;

                int[,] array = new int[countOfList/2, 2];

                array = Populate2DArrayFromList(countOfList, valuesInRange);

               foreach (var item in array)
                {
                    System.Console.WriteLine(item);
                }
            }
            catch (System.IO.IOException err)
            {
                System.Console.WriteLine(err.Message);
            }
        }

        public static int[,] Populate2DArrayFromList(int countOfList, List<int> list)
        {
            int[,] array = new int[countOfList/2, 2];

            int listNum = 0;
            for(int rownum = 0; rownum < countOfList/2; rownum++)
            {
                array[rownum, 0] = list[listNum];
                System.Console.WriteLine("added to column A {0}", list[listNum]);
                listNum = listNum + 2;
            }

            listNum = 1;
            for (int rownum = 0; rownum < countOfList/2; rownum++)
            {
                array[rownum, 1] = list[listNum];
                System.Console.WriteLine("added to column B {0}", list[listNum]);
                listNum = listNum + 2;
             }
             return array;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...