C# 获取excel架构并的导入sqlserver的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 获取excel架构并的导入sqlserver的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2893字,纯文字阅读大概需要5分钟。
内容图文
using 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); } } publicvoid 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, newobject[] { 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
原文:http://www.cnblogs.com/liuslayer/p/5591628.html
内容总结
以上是互联网集市为您收集整理的C# 获取excel架构并的导入sqlserver的方法全部内容,希望文章能够帮你解决C# 获取excel架构并的导入sqlserver的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。