2017-08-15 2 views
-1

C#とADO.netを使用してExcelファイルをデータベースにインポートするコードを作成しようとしましたが、コードは実行されましたが、出力は間違っています。ExcelデータベースをデータベースADO.netにインポートする方法

using Excel; 
using System.IO; 

namespace ExpPerson 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void btnImport_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       OpenFileDialog op = new OpenFileDialog(); 
       op.Filter = "Excel Workbook| *.xls;*.xlsx;*.xlsm"; 
       if (op.ShowDialog() == DialogResult.Cancel) 
        return; 
       FileStream stream = new FileStream(op.FileName, FileMode.Open); 
       IExcelDataReader excelreader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
       DataSet result = excelreader.AsDataSet(); 

       MaamoonKhalidIssueEntities db = new MaamoonKhalidIssueEntities(); 
        foreach (DataTable table in result.Tables) 
        { 
         foreach (DataRow dr in table.Rows) 
         { 
          Person addtable = new Person() 
          { 
           nname = Convert.ToString(dr[0]), 
           ncode = Convert.ToString(dr[1]), 
           nTel1 = Convert.ToString(dr[2]), 
           nTel2 = Convert.ToString(dr[3]), 
           nFax = Convert.ToString(dr[4]), 
           nEmail = Convert.ToString(dr[5]), 
           nAdd = Convert.ToString(dr[6]) 
          }; 
         } 



       } 
       db.SaveChanges(); 
       excelreader.Close(); 
       stream.Close(); 

       MessageBox.Show("Import Sucess","Good",MessageBoxButtons.OK,MessageBoxIcon.Hand); 
      } 


      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
     } 
    } 
} 

しかし、コードがエラーなし実行されますが、データベース内のデータは適切ではないと私は間違っているかを把握することができない問題があります。

+0

この列に 'db.People.Add(addtable);'を追加し、この 'db.SaveChanges();を削除しても何も起こりません。 –

+0

ありがとうございました –

答えて

1

DataRowループの各繰り返しでdb.People.Add(addtable);に電話する必要があります。だから、

foreach (DataRow dr in table.Rows) 
{ 
    Person addtable = new Person() 
    { 
     nname = Convert.ToString(dr[0]), 
     ncode = Convert.ToString(dr[1]), 
     nTel1 = Convert.ToString(dr[2]), 
     nTel2 = Convert.ToString(dr[3]), 
     nFax = Convert.ToString(dr[4]), 
     nEmail = Convert.ToString(dr[5]), 
     nAdd = Convert.ToString(dr[6]) 
    }; 
    db.People.Add(addtable) 
} 

そうでない場合は、Entity Frameworkのは、あなたがそれらをデータベースに挿入したく知りません。

関連する問題