1、首先新建一个Excel表格
2、在新建 Microsoft Excel 工作表中输入要编辑的内容。如图:
3、选中所编辑的内容,在名称框中输入数据库的名称并按回车键。(注:在此把新建的数据库命名为“普实软件”)
4、保存新建的 Microsoft Excel 工作表,数据库创建完成。
using Systemusing 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)
// }
// }
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)