如何使用C#窗体窗体应用程序上传Excel文件到SQL数据库表

我想通过C#中的Windows窗体应用程序上传一个Excel文件,并希望将数据导入到数据库(Mysql服务器)。 我怎样才能做到这一点??? 我创build了一个表格,要求我将一个excelfile upload到mysql数据库。 它向数据库表批量插入数据。

我的Excel文件包含用户标识,密码,名字,姓氏,用户组和密码,MySql数据库表(aster_users)列包含许多列,如用户ID,密码,名字,姓氏,用户组,队列,活动,created_date,created_by,angular色..

我需要将该excelfile upload到我的数据库和其他列将变为空或空这不是一个问题。

我的表单devise是 在这里输入图像说明

这是我的C#代码:

using MySql.Data.MySqlClient; using System; using System.Data.SqlClient; using System.Windows.Forms; namespace UploadFileToDatabase { public partial class Form1 : Form { public Form1() { InitializeComponent(); } String MyConString = "SERVER=******;" + "DATABASE=dbs;" + "UID=root;" + "PASSWORD=pwsd;" + "Convert Zero Datetime = True"; private void BtnSelectFile_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Text files | *.csv"; if (dlg.ShowDialog() == DialogResult.OK) { string fileName; fileName = dlg.FileName; txtfilepath.Text = fileName; } } private void btnUpload_Click(object sender, EventArgs e) { string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtfileparth.Text + ";Extended Properties=\"Excel 12.0;HDR=YES;\""; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand ("Select * FROM [Sheet1$]", connection); connection.Open(); using (DbDataReader dr = command.ExecuteReader()) { string sqlConnectionString = MyConString; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString)) { bulkCopy.ColumnMappings.Add("[userid]", "userid"); bulkCopy.ColumnMappings.Add("password", "password"); bulkCopy.ColumnMappings.Add("first_name", "first_name"); bulkCopy.ColumnMappings.Add("last_name", "last_name"); bulkCopy.ColumnMappings.Add("user_group", "user_group"); bulkCopy.DestinationTableName = "aster_users"; bulkCopy.WriteToServer(dr); MessageBox.Show("Upload Successfull!"); } } } } 

这是我如何try.i得到了这样的错误信息

其他信息:外部表格不是预期的格式。

在这行连接。打开(); 。 如何才能做到这一点?

在这里输入图像描述

 using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.Windows.Forms; namespace IMPORT { public partial class Form1 : Form { public Form1() { InitializeComponent(); } String MyConString = "SERVER=******;" + "DATABASE=db;" + "UID=root;" + "PASSWORD=pws;"; private void btnSelectFile_Click(object sender, EventArgs e) { OpenFileDialog openfiledialog1 = new OpenFileDialog(); openfiledialog1.ShowDialog(); openfiledialog1.Filter = "allfiles|*.xls"; txtfilepath.Text = openfiledialog1.FileName; } private void btnUpload_Click(object sender, EventArgs e) { string path = txtfilepath.Text; string ConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties = Excel 8.0"; DataTable Data = new DataTable(); using (OleDbConnection conn =new OleDbConnection(ConnString)) { conn.Open(); OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM [dataGridView1_Data$]", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(Data); conn.Close(); } string ConnStr = MyConString; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConnStr)) { bulkCopy.DestinationTableName = "TABLE NAME"; bulkCopy.ColumnMappings.Add("userid", "userid"); bulkCopy.ColumnMappings.Add("password", "password"); bulkCopy.ColumnMappings.Add("first_name", "first_name"); bulkCopy.ColumnMappings.Add("last_name", "last_name"); bulkCopy.ColumnMappings.Add("user_group", "user_group"); bulkCopy.WriteToServer(Data); MessageBox.Show("UPLOAD SUCCESSFULLY"); } } } 

一个例子发现 http://technico.qnownow.com/bulk-copy-data-from-excel-to-destination-db-using-sql-bulk-copy/ 错误:其他信息:外部表格不是预期的格式

ஆர்த்தி,

使用下面的连接string格式

  string File = sResponsedExcelFilePath; string result = Path.GetFileName(sFilePath); ExcelReaderConnString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + File +"\\"+ result + ";Extended Properties=Excel 12.0;"); 

希望这对你有用。

有一个很棒的链接 ,显示如何从Excel中上传到C#数据表…如果链接死亡,我正在分享程序….

卓越的连接string为差异版本:

 private string Excel03ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"; private string Excel07ConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"; 

文件select事件:

 private void BtnSelectFile_Click(object sender, EventArgs e) { DataTable dt; OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Excel files | *.xls"; if (dlg.ShowDialog() == DialogResult.OK) { string filePath = dlg.FileName; string extension = Path.GetExtension(filePath); string conStr, sheetName; conStr = string.Empty; switch (extension) { case ".xls": //Excel 97-03 conStr = string.Format(Excel03ConString, filePath); break; case ".xlsx": //Excel 07 to later conStr = string.Format(Excel07ConString, filePath); break; } //Read Data from the Sheet. using (OleDbConnection con = new OleDbConnection(conStr)) { using (OleDbCommand cmd = new OleDbCommand()) { using (OleDbDataAdapter oda = new OleDbDataAdapter()) { dt = new DataTable(); cmd.CommandText = "SELECT * From [Sheet1$]"; cmd.Connection = con; con.Open(); oda.SelectCommand = cmd; oda.Fill(dt); con.Close(); } } } //Save the datatable to Database string sqlConnectionString = MyConString; if(dt != null) { using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString)) { bulkCopy.ColumnMappings.Add("[userid]", "userid"); bulkCopy.ColumnMappings.Add("password", "password"); bulkCopy.ColumnMappings.Add("first_name", "first_name"); bulkCopy.ColumnMappings.Add("last_name", "last_name"); bulkCopy.ColumnMappings.Add("user_group", "user_group"); bulkCopy.DestinationTableName = "aster_users"; bulkCopy.WriteToServer(dt); MessageBox.Show("Upload Successfull!"); } } } } 

然后,你可以将数据表保存到mySql数据库,我希望你知道该怎么做…如果你不能然后评论我会尽我所能来帮助你。 谢谢

希望这可以帮助….

 using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.Windows.Forms; namespace IMPORT { public partial class Form1 : Form { public Form1() { InitializeComponent(); } String MyConString = "SERVER=******;" + "DATABASE=db;" + "UID=root;" + "PASSWORD=pws;"; private void btnSelectFile_Click(object sender, EventArgs e) { OpenFileDialog openfiledialog1 = new OpenFileDialog(); openfiledialog1.ShowDialog(); openfiledialog1.Filter = "allfiles|*.xls"; txtfilepath.Text = openfiledialog1.FileName; } private void btnUpload_Click(object sender, EventArgs e) { string path = txtfilepath.Text; string ConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties = Excel 8.0"; DataTable Data = new DataTable(); using (OleDbConnection conn =new OleDbConnection(ConnString)) { conn.Open(); OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM [dataGridView1_Data$]", conn); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(Data); conn.Close(); } string ConnStr = MyConString; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConnStr)) { bulkCopy.DestinationTableName = "TABLE NAME"; bulkCopy.ColumnMappings.Add("userid", "userid"); bulkCopy.ColumnMappings.Add("password", "password"); bulkCopy.ColumnMappings.Add("first_name", "first_name"); bulkCopy.ColumnMappings.Add("last_name", "last_name"); bulkCopy.ColumnMappings.Add("user_group", "user_group"); bulkCopy.WriteToServer(Data); MessageBox.Show("UPLOAD SUCCESSFULLY"); } } }