我有以下显示的Excel文件
我想读一读所有学校名称和学校地址&将它们插入mySql数据库的SchoolInfo表中。
之后我想读取每所学校的数据。将它插入到StudentsInfo表中,该表具有与SchoolInfo表关联的外键。
我正在读这样的excel表。
public static void Import(string fileName) { string strConn =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source =”+ fileName + “;扩展属性= \”Excel 12.0; HDR =否; 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表中。
答案 0 :(得分:0)
请尝试以下步骤:
首先,您必须创建与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");
现在使用
为整个表格迭代地将单元格数据提取到变量中variable = xlDataset.Tables[0].Rows[row_value][column_value].ToString() ;
现在使用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()