Цикл C # foreach — увеличение не работает с адресом ячейки Excel

#c# #excel #loops #foreach

#c# #excel #циклы #foreach

Вопрос:

Я хочу выполнить итерацию по именам столбцов DataTable dt и сохранить их в точно таком же порядке в фиксированной строке на листе Excel. Все имена столбцов регистрируются (от первого до последнего). Однако в Excel фактически записывается только имя последнего столбца, и оно находится в ячейке, где должен быть первый столбец.

 foreach(DataColumn column in dt.Columns) {
   int j = 0;
   j  ;
   columnName = column.ToStrin&();
   worksheet.Cells[5, j] = columnName;
   Lo&Messa&e(columnName);
}
  

Что не так с этим циклом?

Комментарии:

1. int j = 0; Переместите это в перед циклом.

2. j всегда будет равно 1, поскольку вы устанавливаете его на 0 каждую итерацию, а затем увеличиваете до 1

Ответ №1:

Каждый раз при выполнении итерации вы устанавливаете значение j равным 0, а затем увеличиваете до 1. Это всегда будет 1

 int j = 0; // move this outside the for loop
foreach(DataColumn column in dt.Columns) {   
   j  ;
...
  

Комментарии:

1. О, теперь это кажется таким очевидным, спасибо, что указали на это!