using System.Collections.Generic
using System.Linq
using System.Web
using System.Web.UI
using System.Web.UI.WebControls
using System.Data
using System.Collections
using System.Windows.Forms
using System.Data.OleDb
using System.Data.Common
using System.Data.SqlClient
public partial class Excel导入_Default : System.Web.UI.Page
{
private static string filename
private static string savePath
private static DataSet ds //要插入的数据
private static DataTable dt
protected void Page_Load(object sender, EventArgs e)
{
}
//上传文件到指定的服务器
protected void Button1_Click1(object sender, EventArgs e)
{
filename = this.fileUploadExcel.FileName
//savePath必须包含表名在内的所有路径名
savePath = @"G:\项目组文件\项目.net学习资料\工程\Health\Excel导入\Files\" + this.fileUploadExcel.FileName //上传服务器文件的存储,存在当前新建的文件夹
this.fileUploadExcel.SaveAs(savePath)
Boolean judge_excel = Judge_Excel()
if (!judge_excel)
{
MessageBox.Show("上传的不是excel文件", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Error)
return
}
else
MessageBox.Show("上传文件成功", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)
//测试,将excel中的sheet1导入到sqlserver中
//string connString = "server=localhostuid=sapwd=sqlgisdatabase=master"
//System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog()
//if (fd.ShowDialog() == DialogResult.OK)
//{
// //TransferData(fd.FileName, "sheet1", connString)
//}
}
//判断文件是否是excel文件函数
protected Boolean Judge_Excel()
{
string fileExtend = System.IO.Path.GetExtension(this.fileUploadExcel.FileName)
if (fileExtend == ".xlsx" || fileExtend == ".xls")
return true
else
return false
}
//获取excel数据按钮的触发,
protected void Button2_Click(object sender, EventArgs e)
{
ExcelToDataSet()
MessageBox.Show("获取数据成功", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)
}
//从excel表中获取数据的函数
public void ExcelToDataSet()
{
string strConn = "Provider = Microsoft.Jet.OLEDB.4.0 Data Source = " + savePath + "Extended Properties=\"Excel 8.0HDR=YesIMEX=1\""
OleDbConnection conn = new OleDbConnection(strConn) //连接excel
if (conn.State.ToString() == "Open")
{
conn.Close()
}
conn.Open() //外部表不是预期格式,不兼容2010的excel表结构
string s = conn.State.ToString()
OleDbDataAdapter myCommand = null
ds = null
/*DataTable yTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" })//获取表的框架,几行几列
string tableName = yTable.Rows[0]["filename"].ToString() //表示的是几行几列
string strSel = "select * from [" + filename + "]"//xls */
string strExcel = "select * from [sheet1$]" //如果有多个sheet表时可以选择是第几张sheet表
myCommand = new OleDbDataAdapter(strExcel, conn)//用strExcel初始化myCommand,查看myCommand里面的表的数据??
ds = new DataSet()
myCommand.Fill(ds) //把表中的数据存放在ds(dataSet)
conn.Close()
try
{
dt = ds.Tables[0]
this.dataGridView1.DataSource = dt
}
catch (Exception err)
{
MessageBox.Show(" *** 作失败!" + err.ToString())
}
}
//excel导入数据库sql的按钮触发
protected void Button3_Click(object sender, EventArgs e)
{
//string path = @"D:\数据库SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test.mdf"
string connString = "server=localhostuid=sapwd=1234database=Test" //连接数据库的路径方法
//String connString=@"server=localhostuid=sapwd=1234database=D:\数据库SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test.mdf"
SqlConnection conn = new SqlConnection(connString)
conn.Open()
DataRow dr = null
int C_Count = dt.Columns.Count//获取列数
for (int i = 0 i < dt.Rows.Count i++) //记录表中的行数,循环插入
{
dr = dt.Rows[i]
insertToSql(dr, C_Count, conn)
}
conn.Close()
if (dataGridView1.Rows.Count > 0) //把数据库表中的数据显示到表中,可判断有没有数据
{
MessageBox.Show("导入成功!")
}
else
{
MessageBox.Show("没有数据!")
}
}
//使用bcp,不容易出错而且效率高
/*try
{
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connString))
{
bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied)
bcp.BatchSize = 100//每次传输的行数
bcp.NotifyAfter = 100//进度提示的行数
bcp.DestinationTableName = savePath//目标表
bcp.WriteToServer(ds.Tables[0])
}
}
catch
{
System.Windows.Forms.MessageBox.Show(ex.Message)
}*/
//插入数据库的函数
protected void insertToSql(DataRow dr, int column_count, SqlConnection conn)
{
//excel表中的列名和数据库中的列名一定要对应
string name = dr[0].ToString()//需要把内个列都列出来
string age = dr[1].ToString()
string sex = dr[2].ToString()
//当数据库中有多个表时,怎么分辨插入的表
string sql = "insert into 客户 values('" + name + "','" + age + "','" + sex + "')"
SqlCommand cmd = new SqlCommand(sql, conn)
cmd.ExecuteNonQuery()
}
//从excel表中获取数据并存在
// protected void ImportFromExcel()
// {
// string execelConnectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0Data Source=filename
// Extended Properties=""Excel 8.0HDR=YESIMEX=1\"""//表第一行是标题,不做为数据使用, Excel 档案只能用来做“读取”用途。
// ds = new DataSet()
// string connString = "Provider = Microsoft.Jet.OLEDB.4.0 Data Source = "
// + savePath + "Extended Properties=\"Excel 8.0HDR=YesIMEX=1\""
// DataTable table = OleDbHelper.GetExcelTables(connString)
// if (table == null || table.Rows.Count <= 0)
// {
// return
// }
// foreach (DataRow dr in table.Rows)
// {
// string cmdText = "select * from [" + dr["TABLE_NAME"].ToString() + "]"
// DataTable dt = OleDbHelper.FillDataTable(connString, cmdText)
// dt.TableName = dr["TABLE_NAME"].ToString()
// ds.Tables.Add(dt)
// }
// }
}
1、打开SQL Server 2014 Management Studio 数据库,并且登录进去;
2、新建一个数据库,将excel导入,在新建的数据名字上,鼠标右键,选择任务选项,之后导入数据,就会看到导入excel文件的窗口;
3、下拉框选中Microsoft Excel,浏览添加你需要导入到数据库的excel文件,然后点击下一步;
4、下拉框选中sql开头的,验证方式自己选择,一般是默认的验证方式,然后下面的数据库;
5、出现的这个页面不用动任何 *** 作,直接继续点击下一步即可;
6、现在表示导入成功,上面有各类详细的数据,可以选择关闭,这个时候记得刷新数据库的表,否则看不到新导入的数据。
方法/步骤1
1)打开你的sql server,找到要导入数据的数据库,右键——〉任务——〉导入数据
2
2)按照图示选择要导入的excel
3
3)选择导入到哪个数据库
4
4)导入excel选择第一项即可,选择第二项是表与表直接内容的筛选复制
5
5)选择源表和源视图
6
6)编辑映射页面
7
7)继续下一步,点击完成,看到传输数据完成页面
8
8)进入数据库刷新,查看刚刚导入的表,完成!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)