当前位置:Gxlcms > 数据库问题 > C# 获取excel架构并的导入sqlserver的方法

C# 获取excel架构并的导入sqlserver的方法

时间:2021-07-01 10:21:17 帮助过:1人阅读

System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Data.SqlClient; using System.IO; namespace WindowsFormsApplication1 { public partial class Form3 : Form { public Form3() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string connString = "server=localhost;database=Test;uid=sa;pwd=123456"; OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { TransferData(ofd.FileName, connString); } } public void TransferData(string excelFile, string connectionString) { try { string fileType = Path.GetExtension(excelFile); //获取全部数据 string strConn=""; if (fileType == ".xls") { strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; } else { strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + ";Extended Properties=Excel 12.0"; } OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataSet ds = new DataSet(); DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); for (int i = 0; i < dt.Rows.Count; i++) { string sheetName = dt.Rows[i]["Table_Name"].ToString(); if (sheetName.Contains("$") && !sheetName.Replace("", "").EndsWith("$")) { continue; } string strExcel = string.Format("select * from [{0}]", sheetName); OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, conn); DataSet dsItem = new DataSet(); myCommand.Fill(dsItem, sheetName); dsItem.Tables[0].TableName = sheetName.TrimEnd($).Trim();//读取出来的表明会自动添加‘$‘符号,需要去掉。 ds.Tables.Add(dsItem.Tables[0].Copy()); } for (int i = 0; i < ds.Tables.Count; i++) { string sheetName = ds.Tables[i].TableName; string strSql = string.Format("if object_id(‘{0}‘) is null create table {0}(", sheetName); foreach (System.Data.DataColumn c in ds.Tables[0].Columns) { strSql += string.Format("[{0}] varchar(255),", c.ColumnName); } strSql = strSql.Trim(,) + ")"; using (SqlConnection sqlConn = new SqlConnection(connectionString)) { sqlConn.Open(); using (SqlCommand cmd = sqlConn.CreateCommand()) { cmd.CommandText = strSql; cmd.ExecuteNonQuery(); } } using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString)) { bcp.BatchSize = 100; bcp.DestinationTableName = sheetName; //建立excel和sqlserver表之间的映射关系 bcp.ColumnMappings.Add(0, 0); bcp.ColumnMappings.Add(1, 1); bcp.ColumnMappings.Add(2, 2); bcp.WriteToServer(ds.Tables[i]); } } } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } } }

 http://blog.csdn.net/jinjazz/article/details/2650506

http://www.cnblogs.com/advocate/archive/2010/04/12/1710383.html

http://developer.51cto.com/art/201302/380622.htm

C# 获取excel架构并的导入sqlserver的方法

标签:

人气教程排行