2015-12-11 3 views
0

У меня проблемы с этой функцией. поэтому в основном пользователь загрузит файл excel .xls (версия 2003 года), после нажатия кнопки импорта он прочитает файл excel и импортирует его в базу данных sql.LinQtoExcel using asp fileupload

вот мой код

protected void btnImport_Click(object sender, EventArgs e) 
    { 
     Business.Student student = new Business.Student(); 
     int errorCount = 0; 
     int successCount = 0; 
     string successTotal; 
     int missinglastname = 0; 
     int missingfirstname = 0; 
     int missingmiddlename = 0; 
     if (filebiometrics.HasFile == false) 
     { 
     } 
     else 
     { 
      string pathToExcelFile = filebiometrics.FileName; 
      var excelFile = new ExcelQueryFactory(pathToExcelFile); 
      IEnumerable<string> worksheetnames = excelFile.GetWorksheetNames(); 
      string worksheetName = excelFile.GetWorksheetNames().ToArray()[0]; 

      var import = from a in excelFile.Worksheet<Business.Student.StudentList>(worksheetName) select a; 

      //var emptyfield = excelFile.Worksheet<Business.Employees.EmployeeImport>().Where(x => x.Surname != null).ToList(); 
      excelFile.AddMapping<Business.Student.StudentList>(x => x.studentnumber, "Student Number"); 
      excelFile.AddMapping<Business.Student.StudentList>(x => x.firstname, "Firstname"); 
      excelFile.AddMapping<Business.Student.StudentList>(x => x.lastname, "Lastname"); 
      excelFile.AddMapping<Business.Student.StudentList>(x => x.middlename, "Middlename"); 
      string missing = "Missing!"; 
      foreach (var a in import) 
      { 
       if (a.studentnumber == 0) 
       { 
       } 
       if (a.lastname == null) 
       { 
        a.lastname = missing; 
        missinglastname = missinglastname + 1; 
       } 
       if (a.firstname == "") 
       { 
        a.firstname = missing; 
        missingfirstname = missingfirstname + 1; 
       } 

       if (a.middlename == null) 
       { 
        missingmiddlename = missingmiddlename + 1; 
       } 
       else if (student.CheckExistingStudentNumber(a.studentnumber)) 
       { 
        errorCount = errorCount + 1; 
       } 
       else 
       { 
        student.Create(a.studentnumber, a.firstname, a.lastname, a.middlename); 
        successCount = successCount + 1; 
        successTotal = "Total imported record: " + successCount.ToString(); 
       } 
      } 
      txtLog.InnerText = "Total duplicate record: " + errorCount.ToString() + 
           Environment.NewLine + 
           "Total missing data on Firstname column: " + missingfirstname.ToString() + 
           Environment.NewLine + 
           "Total missing data on Lastname column: " + missinglastname.ToString() + 
           Environment.NewLine + 
           "Total missing data on middlename column: " + missingmiddlename.ToString() + 
           Environment.NewLine + 
           Environment.NewLine + 
           "Total imported record: " + successCount.ToString(); 
      filebiometrics.Attributes.Clear(); 
     } 
    } 

им всегда получаю эту ошибку

the error is in this line 'IEnumerable worksheetnames = excelFile.GetWorksheetNames();'

может кто-нибудь помочь мне с этим?

ответ

1

Ваше сообщение об ошибке самоочевидно. Ошибка в этой строке: -

var excelFile = new ExcelQueryFactory(pathToExcelFile); 

ExcelQueryFactory ожидает полный путь к файлу, но вы просто передавая имя файла Excel с помощью string pathToExcelFile = filebiometrics.FileName; и, очевидно, не в состоянии прочитать файл.

Вы должны прочитать файл первенствовать, который при загрузке пользователя и сохранить его на сервер, а затем прочитать его, как это: -

string filename = Path.GetFileName(filebiometrics.FileName); 
filebiometrics.SaveAs(Server.MapPath("~/") + filename); 
var excelFile = new ExcelQueryFactory(Server.MapPath("~/") + filename); 
+1

жаль о новобранец ошибка человека им просто стажером и новое на этом языке , и моего руководителя нет. большое спасибо! действительно помог мне! –

Смежные вопросы