1)接受数据导入的表已经存在。
insert into t1 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0HDR=YESDATABASE=c:\\test.xls',sheet1$)
2)导入数据并生成表。
select * into t1 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0HDR=YESDATABASE=c:\\test.xls',sheet1$)
3) 导入Excel中指定的列到数据库表中指定的列。
INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0HDR=YESDATABASE=c:\\test.xls',sheet1$)
需要注意的地方。
1)外围应用配置器的设置。
从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
2)关闭Excel表。
如果在导入时要导入的Excel表格处于打开状态,会提示:
“无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoft.jet.oledb.4.0" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的数据库表,则忽略首行。
我只有asp.net的,c#也可以使用,但是没测试过java那些的。将Excel里面的数据导入到数据库中的原理就是将Excel里面的数据存储到一个dataTable中,然后将数据一行一行添加到数据库的表里。给你部分代码,相信你能够如此好学,应该能看懂,有些变量你自己研究是什么,不然全部给你打出来了,你就只会copy了。
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["aa"].ToString())con.Open()//数据库连接字符串
DataTable dtXls = new DataTable()
if (this.fudAdd.PostedFile.FileName.ToString().Trim() != "" && this.fudAdd.PostedFile.FileName!=null)
{
string filePath = this.fudAdd.PostedFile.FileName.ToString().Trim()
FileInfo fileTag = new FileInfo(fudAdd.PostedFile.FileName)
string extendedName = fileTag.Extension
if (extendedName.ToLower() != ".xls" && extendedName.ToLower() != ".xlsx")
{
Response.Write("<script>alert('请选择一个Excel文件!')</script>")
return
}
else
{
dtXls = ExcelToDataTable(filePath,extendedName)
if (dtXls==null||dtXls.Rows.Count <= 0 || dtXls.Columns[0].ToString() == "")
{
Response.Write("<script>alert('请你确认上传的Excel中有资料!')</script>")
return
}
else
{
if (dtXls.Columns[0].ToString() != "手机号码" || dtXls.Columns[1].ToString() != "状态")
{
Response.Write("<script>alert('请确定Excel资料的格式为[手机号码][状态]!')</script>")
return
}
else
{
if (dtXls.Rows[0][0].ToString() == "")
{
Response.Write("<script>alert('请确定Excel资料的格式为[手机号码][状态]!')</script>")
return
}
else
{
string result = AddXlsData(dtXls, con)
string[] resultData = result.Split('-')
string msg = "资料上传成功!共计" + resultData[0] + "条成功," + resultData[1] + "条失败!"
Response.Write("<script>alert('" + msg + "')</script>")
logwrite.LogOpera(userid, "UnExistMobile_Mag.aspx", "UnExistMobile_Mag.aspx.cs", "成功上传一批空号")//记录log
BindData()
return
}
}
}
}
con.Close()
//
#region ExcelToDataTable
/// <summary>
/// 读取xls文件
/// Add by
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
protected DataTable ExcelToDataTable(string fileName, string extendedName)
{
string strConn = string.Empty
if (extendedName.ToLower() == ".xls")
{
strConn = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" + fileName + "Extended Properties='Excel 8.0HDR=YesIMEX=1'"
}
if (extendedName.ToLower() == ".xlsx")
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0Data Source=" + fileName + "Extended Properties='Excel 12.0HDR=YES'"
}
OleDbConnection conn = new OleDbConnection(strConn)
conn.Open()
System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null)
string tableName = schemaTable.Rows[0][2].ToString().Trim()
string strExcel = ""
OleDbDataAdapter myCommand = null
DataSet ds = null
strExcel = "Select * From [" + tableName + "]"
myCommand = new OleDbDataAdapter(strExcel, strConn)
ds = new DataSet()
myCommand.Fill(ds, tableName)
if (ds != null)
{
System.Data.DataTable dt = ds.Tables[0]
return dt
}
else
{
return null
}
conn.Close()
ds.Dispose()
}
#endregion
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)