-2

我有如下所示的 Excel 文件

在此处输入图像描述

我想阅读第一个只读所有学校名称和学校地址并将它们插入 mySql 数据库的 SchoolInfo 表中。

之后,我想读取每所学校的数据并将其插入到 StudentInfo 表中,该表具有与 SchoolInfo 表关联的外键。

我正在阅读类似这样的excel表。

public static void Import(string fileName) { string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\"" ;

    var output = new DataSet();

    using (var conn = new OleDbConnection(strConn))
    {
        conn.Open();

        var dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

        if (dt != null)
            foreach (DataRow row in dt.Rows)
            {
                string sheet = row["TABLE_NAME"].ToString();

                var cmd = new OleDbCommand("SELECT * FROM [+"+sheet+"+]", conn);
                cmd.CommandType = CommandType.Text;

                OleDbDataAdapter xlAdapter = new OleDbDataAdapter(cmd);

                xlAdapter.Fill(output,"School");
            }
    }

}

现在我在数据集的数据表中有数据,现在如何读取所需的数据并将其插入我的 sql 表中。

4

1 回答 1

0

尝试以下步骤:

  1. 从 Excel 工作表中读取

首先,您必须创建到 Excel 文件的 OleDB 连接。

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + path + ";" +
"Extended Properties=Excel 8.0;";
OleDbConnection xlConn = new OleDbConnection(connectionString);
xlConn.Open();

这里的路径是指 Excel 电子表格的位置。例如 "D:\abc.xls" 然后你必须查询你的表。为此,我们必须首先为表和列定义名称。点击这里了解如何。现在创建命令对象。

OleDbCommand selectCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", xlConn);

现在我们必须使用 DataAdapter 将 select 命令的输出存储到 DataSet

OleDbDataAdapter xlAdapter = new OleDbDataAdapter();
objAdapter1.SelectCommand = selectCmd;
DataSet xlDataset = new DataSet();
xlAdapter.Fill(xlDataset, "XLData");
  1. 将数据保存到变量中

现在使用迭代将单元格数据提取到整个表格的变量中

variable = xlDataset.Tables[0].Rows[row_value][column_value].ToString() ;
  1. 将变量中的数据写入 MySQL 数据库

现在使用 ODBC 连接连接到 MySQL 数据库

String mySqlConnectionString = "driver={MySQL ODBC 5.1 Driver};" +
"server=localhost;" + "database=;" + "user=;" + "password=;";
OdbcConnection mySqlConn = new OdbcConnection(mySqlConnectionString);
mySqlConn.Open();

使用已从 Excel 工作表中存储数据的变量构造您的 INSERT 语句。

OdbcCommand mySqlInsert = new OdbcCommand(insertCommand, mySqlConn);
mySqlInsert.ExecuteScalar()
于 2013-04-02T09:52:03.093 回答