【问题标题】:How to import Excel file to Database ADO.net如何将 Excel 文件导入数据库 ADO.net
【发布时间】:2017-08-15 12:23:13
【问题描述】:

我尝试编写代码以使用 C# 和 ADO.net 将 Excel 文件导入数据库,我终于可以运行代码,但输出错误。

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);
            }
        }
    }
}

但是有一个问题是代码运行没有任何错误,但数据库中的数据不正确,我无法弄清楚是什么问题。

【问题讨论】:

  • 我添加这个列 `db.People.Add(addtable);` 并删除这个 db.SaveChanges(); 没有任何反应

标签: c# sql-server excel ado.net


【解决方案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 不知道您希望将它们插入数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多