2015-07-16 1 views
0

У меня есть массив строк, но нулевые значения не индексируются и хранятсяИндекса массива строк не имеющий нулевое значения

Например, если у меня есть массив { «один», «», «три»}, значение из массива [0] является одним, а значение массива [1] становится три вместо «", почему пустые значения удаляются, а индекс следующего значения становится нулевым значением.

Вот мой код, я использую Open XML SDK, чтобы читать и хранить ячейки excel в массиве.

foreach (var row in rows) 
{ 
     int i = 0; 
     string[] rowData = new string[9]; 
     var cells = row.Elements<Cell>(); 

     foreach (var cell in cells) 
     { 
      if (cell != null) 
      { 
       var index = Int32.Parse(cell.CellValue.Text); 

       if (cell.DataType != null) 
       { 
        rowData[i] = GetSharedStringItemById(workbookPart, index); 
       } 
      } 
      i++; 
     } 

     var store = new UserStore<User>(context); 
     var manager = new UserManager<User>(store); 
     var user = new User 
     { 
      UserName = rowData[0], 
      FirstName = rowData[1], 
      LastName = rowData[2], 
      Email = rowData[3], 
      EmailConfirmed = true, 
      RegisterdOn = now, 
      Employer = new Employer() 
      { 
       CompanyName = rowData[4], 
       AddressLine1 = rowData[5], 
       AddressLine2 = rowData[6], 
       City = rowData[7], <---if value of city is null, the value of PostCode is used? 
       PostCode = rowData[8], 
      } 
     }; 

     var result = manager.Create(user, "123456"); 
     if (result.Succeeded) 
     { 
      manager.AddToRole(user.Id, "Employer"); 
     } 
} 
+0

На основе кода, который вы отправили, проблема заключается в том, что свойство 'cell.CellValue.Text' возвращает неверный индекс, или метод GetSharedStringItemById()' неправильно использует индекс, который ему передан. Но ваш пример кода крайне неадекватен. Если вы хотите получить реальный ответ, напишите [хороший, _minimal_, _complete_ пример кода] (https://stackoverflow.com/help/mcve), который надежно воспроизводит проблему. –

ответ

-3

Вы можете проверить ниже, если это помогает

// проверить, если значение ячейки равно нулю до преобразования в целое

if(cell.CellValue.Text != null){ 

var index = Int32.Parse(cell.CellValue.Text); 

// добавить значение преобразования в массиве

rowData[i] = GetSharedStringItemById(workbookPart, index); 

    } 

//in case the value contained in a cell is null, then assign either "" or null 

rowData[i] = ""; 

Также обратите внимание, что значение "" не совпадает с нулевым. если вы проверите «» и «null» для равенства, результат теста будет ложным.