iHimanshugehlot Ответов: 1

Как читать столбцы один за другим в файле. xlsx через C#


У меня есть два столбца в файле. xlsx с разным набором IP-адресов, я хочу пропинговать эти ip-адреса с помощью c# со всеми IP-адресами, доступными в столбце A один за другим, а затем повторить то же самое с столбцом B.

Я закончил с кодом ping, но застрял с чтением значений из файла .xslx с помощью C#

Ниже приведен справочный код, который я получил в сети.

Пожалуйста, подскажите, как я могу читать значения столбцов один за другим и выполнять свою задачу ping!!!

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

Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"E:\Test.xlsx");
            Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Excel.Range xlRange = xlWorksheet.UsedRange;

            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count;

            for (int i = 1; i <= rowCount; i++)
            {
                for (int j = 1; j <= colCount; j++)
                {
                    string data = xlRange.Cells[i, j].Value2.ToString();
                    MessageBox.Show(data);
                }
            }

1 Ответов

Рейтинг:
10

OriginalGriff

Цитата:
Ниже приведен справочный код, который я получил в сети.
И что он делает?
Просто: он читает каждую строку, и внутри каждой строки он читает каждый столбец.
Таким образом, все, что вам нужно сделать, это удалить внутренний цикл и заменить его строкой кода, которая обращается к интересующему вас столбцу, преобразовать его соответствующим образом, чтобы он соответствовал вашему пинг-коду, и передать его в существующий пинг-код для обработки.

Честно говоря, если вы не можете решить это для себя с помощью простого фрагмента кода, как вы показываете, то вам нужно вернуться к первым принципам в вашем курсе C# и изучить их должным образом. Идея "развития" заключается в том, что это слово предполагает: "систематическое использование научно-технических знаний для достижения конкретных целей или требований." BusinessDictionary.com[^]
Это не то же самое, что "быстро гуглите и сдавайтесь, если я не могу найти точно правильный код".
Вы никогда не найдете точно подходящий код для ваших нужд - вы должны быть в состоянии либо написать его самостоятельно, либо понять его достаточно хорошо, чтобы изменить существующий код так, чтобы он соответствовал вашим потребностям.


iHimanshugehlot

Сэр, я выполнил вышеописанный код, но он возвращает одно значение из столбца а, а затем одно значение из столбца В.

Как и предлагалось, я зациклил ту же колонку, но это дает исключение.

Я застрял на этой линии :

строковые данные = xlRange.Клетки[Я, J].Значение2.Метод toString();

Microsoft.Используется CSharp.RuntimeBinder.RuntimeBinderException был необработан
Значение HRESULT=-2146233088
Message=не удается выполнить привязку времени выполнения к нулевой ссылке
Источник=Анонимно Размещенная Сборка DynamicMethods
Трассировка стека:
на месте вызова.Цель (Закрытие, CallSite, Object )
в системе.Динамический.Обновленные легаты.UpdateAndExecute1[T0, TRet](CallSite site, T0 arg0)
на месте вызова.Цель (Закрытие, CallSite, Object )
в ConceptCode.frmReadXlms. button1_Click(отправитель объекта, EventArgs e) в e:\1_Working\0\1_All\ConceptCode\ConceptCode\frmReadXlms.cs:line 38
в системе.Окна.Формы.Контроль.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnMouseUp(MouseEventArgs mevent)
в системе.Окна.Формы.Контроль.WmMouseUp(Message& m, кнопка MouseButtons, Int32 клика)
в системе.Окна.Формы.Контроль.WndProc (Message& m)
в системе.Окна.Формы.ButtonBase.WndProc (Message& m)
в системе.Окна.Формы.Кнопка.WndProc (Message& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.OnMessage (Message& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.WndProc (Message& m)
в системе.Окна.Формы.Родное окно.DebuggableCallback(hwnd элемента указателя IntPtr, int32 и глутамат натрия, указателя IntPtr параметр wparam, указателя IntPtr lparam должен)
в системе.Окна.Формы.Небезопасные методы.DispatchMessageW(MSG& msg)
в системе.Окна.Формы.Приложение.ComponentManager.Система.Окна.Формы.Небезопасные методы.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoopInner(типа int32 причина, ApplicationContext контексте)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoop(типа int32 причина, ApplicationContext контексте)
в системе.Окна.Формы.Application. Run(форма mainForm)
в ConceptCode.Program. Main () in e:\1_Working\0\1_All\ConceptCode\ConceptCode\Program.cs:line 19
в системе.AppDomain. _nExecuteAssembly (сборка RuntimeAssembly, String[] args)
в системе.домен приложений.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в корпорации Microsoft.VisualStudio.Хостингпроцесс.HostProc.RunUsersAssembly()
в системе.Нарезание резьбы.ThreadHelper.ThreadStart_Context(состояние объекта)
в системе.Нарезание резьбы.Параллельном режиме.RunInternal(параллельном режиме параллельном режиме, ContextCallback обратного вызова, состояние объекта, логическое preserveSyncCtx)
в системе.Нарезание резьбы.Параллельном режиме.Выполнения(в параллельном режиме параллельном режиме, ContextCallback обратного вызова, состояние объекта, логическое preserveSyncCtx)
в системе.Нарезание резьбы.ExecutionContext. Run(ExecutionContext executionContext, ContextCallback callback, состояние объекта)
в системе.Нарезание резьбы.ThreadHelper.ThreadStart()
Свойство innerexception:

OriginalGriff

Какую часть этой строки вы не понимаете?
Объясните мне, что он делает, и вы увидите, где вы ошибаетесь!