2016-02-02 6 views
0
public List<Project> ImportProjectsFromExcel(string path) 
     { 
      LoadOptions loadOptionForXlsx = new LoadOptions(LoadFormat.Xlsx); 
      Workbook workbook = new Workbook(path, loadOptionForXlsx); 
      char column = 'A'; 
      var project = new Project(); 
      var projects = new List<Project>(); 

      var rowcount = workbook.Worksheets["Sheet1"].Cells.MaxDataRow; 
      for (int index = 2; index <= rowcount + 1;) 
      { 
       var cell = workbook.Worksheets["Sheet1"].Cells[column + index.ToString()]; 
       switch (column) 
       { 

        case 'A': 
         project.ProjectName = cell.StringValue; 
         ++column; 
         break; 
        case 'B': 
         project.ProjectCode = cell.StringValue; 
         ++column; 
         break; 
        case 'C': 
         project.Description = cell.StringValue; 
         ++column; 
         break; 

        case 'D': 
         project.EngagementManagerId = cell.IntValue; 
         ++column; 
         break; 

        case 'E': 
         project.ProjectManagerId = cell.IntValue; 
         ++column; 
         break;       

        case 'F': 
         project.AdditionalNotes = cell.StringValue; 
         ++column; 
         try 
         { 
          AddProject(project); 
          projects.Add(project); 

         } 
         catch (Exception dbEx) 
         { 
          var message = dbEx.Message; 
          dbEx = null; 
         } 
         project = new Project(); 
         ++index; 
         column = 'A'; 
         break; 

       } 
      } 
      return projects; 
     } 

Вопрос: Вот я читаю данные из файла Excel и вставить его в базе данных, и ProjectID является первичным ключом для project.But если ProjectID повторяется в одной ячейке то возникает исключение, но для следующей ячейки, если ProjectId является «уникальным», тогда он также входит в catch и дает исключение для ProjectId. Как это решить?Исключения при импорте данных из Excel в БД

ответ

0

Я думаю, что вы используете свой собственный .NET-код для добавления/обновления значений, извлеченных из ячеек рабочей таблицы (через API Aspose.Cells). Было бы лучше, если бы вы могли экспортировать данные в массивы или DataTable из рабочих листов через API Aspose.Cells (см. document для справки), а затем обновите таблицу базы данных (по собственному .NET-коду). Я также не уверен, какое исключение вы найдете, и исключение генерируется вашим собственным кодом .NET API или API Aspose.Cells? Мы ценим, если вы можете опубликовать свою проблему с образцом проекта и файла шаблона в Aspose.Cells forums, мы проверим его и скоро вам поможем.

Я являюсь евангелистом-разработчиком в Aspose.