跪求excel导入sql数据库的方法(asp.net)

wenmingcool 2008-09-23 08:06:10
RT,越详细越好,谢谢大家
...全文
140 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
drummery 2008-09-25
  • 打赏
  • 举报
回复
这个只是我这个类的一个方法,还有另一个方法是把用户上传的文件保存到临时文件夹,以及导入完成后删除临时文件的函数,这个函数的physicalPath参数就是希望导入的Excel的物理路径。
Robin 2008-09-23
  • 打赏
  • 举报
回复
应该是楼的思路

我做过像这样的
可以跟我联系
sxmonsy 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hongqi162 的回复:]
SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
[/Quote]
paulin 2008-09-23
  • 打赏
  • 举报
回复
mark~
chxuxu 2008-09-23
  • 打赏
  • 举报
回复
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=F://empname.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
System.Data.OleDb.OleDbConnection oledbconn = new System.Data.OleDb.OleDbConnection(strConn);
oledbconn.Open();

DataSet dsexcel = new DataSet();

System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [sheet1$]", oledbconn);
myCommand.Fill(dsexcel);
读出来后再一条一条插入 当然如果是SA用户 可以直接 用select ... insert ...
stormcsharp 2008-09-23
  • 打赏
  • 举报
回复
学习
hongqi162 2008-09-23
  • 打赏
  • 举报
回复
你可以先将excel上传到服务器的指定目录然后再使用上面的sql语句就可以了
greatverve 2008-09-23
  • 打赏
  • 举报
回复
up
hongqi162 2008-09-23
  • 打赏
  • 举报
回复
其他方法


http://support.microsoft.com/kb/321686/zh-cn
hongqi162 2008-09-23
  • 打赏
  • 举报
回复
SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
kushuang333 2008-09-23
  • 打赏
  • 举报
回复
第一步:上传excel,
private bool TransFileFromBrowToWebSvr()
{
string strUpLoadFileName="";
string strFileName="";
lblMsg.Text = "";
if (( flBrowFile.PostedFile != null) && (flBrowFile.PostedFile.ContentLength > 0))
{
//检验文件,文件不能为空和长度要大于0
strFileName = System.IO.Path.GetFileName(flBrowFile.PostedFile.FileName);
strUpLoadFileName = strUploadFileDir + strFileName;
///如果相关子目录不存在就新建子目录
if (System.IO.Directory.Exists(strUploadFileDir) == false)
{
Directory.CreateDirectory(strUploadFileDir);

}
else
{
string [] tmpStringArr = Directory.GetFiles(strUploadFileDir);
if(tmpStringArr.Length>0)
{
for(int i=0;i<tmpStringArr.Length;i++)
{
this.DeleteFile(tmpStringArr[i].ToString());
}
}
}

try
{
if (flBrowFile.PostedFile.ContentLength <= lngMaxFileSize)
{ //保存文件
flBrowFile.PostedFile.SaveAs(strUpLoadFileName);
Session.Add("strUpLoadFileName", strUpLoadFileName);
lblMsg.Text = "文件已上传WEB服务器!";
return true;
}
else //拒绝文件
{
lblMsg.Visible=true;
lblMsg.Text="文件大小超出限制 " + lngMaxFileSize ;//label显示文件超过限制
return false;
}
}
catch(Exception a) //出现错误
{
lblMsg.Visible = true;
lblMsg.Text=a.Message.ToString();
DeleteFile(strUploadFileDir + strFileName);//报错,并删除文件
return false;
}
}
return true;
}

第二步:导入数据库
protected void btnLoadExcel_Click(object sender, System.EventArgs e)
{

if(Session["strUpLoadFileName"]!=null)
{

string strExcelFile = (string) Session["strUpLoadFileName"];
string strSheetName = this.Get_FirstSheetName(strExcelFile);

clsExcelSQL objxSQL = new clsExcelSQL(strExcelFile);
string strSQL=" select * from ["+strSheetName+"$]";
System.Data.DataTable objDt=objxSQL.funGetDataTable(strSQL);


if(objDt.Rows.Count>0)
{
foreach(DataRow dr in objDt.Rows)
{

string strXH=dr["学号"].ToString();
string strKCMC=dr["课程名称"].ToString();
string strKCH =dr["课程号"].ToString();;
if(strKCH==""||strKCH.Trim()=="")
{
strKCH=clsCourse.GetPrimaryKeyID("KCMC='"+strKCMC+"'")[0].ToString();
}

if(strKCMC==""||strKCMC.Trim()=="")
{
strKCMC=clsCourse.funGetFldValue("Course","KCMC","KCH='"+strKCH+"'")[0].ToString();
}
string strScore=dr["课程成绩"].ToString();
string strScoreLevel=dr["课程等第"].ToString();
if(strScore==""||strScore.Trim()=="")
{
switch (strScoreLevel)
{
case "优":
strScore="-1";
break;
case "良":
strScore="-2";
break;
case "中":
strScore="-3";
break;
case "及格":
strScore="-4";
break;
case "不及格":
strScore="-5";
break;

}

}
else if(strScoreLevel==""||strScoreLevel.Trim()=="")
{
strScoreLevel=clsXXCJBex.Get_kcdd(strScore);
}
string strYear=dr["学年"].ToString();
string strTerm=dr["学期"].ToString();
if ((strTerm == "1" || strTerm == "第一学期"))
{
strTerm = "第一学期";
}
else if ((strTerm == "2" || strTerm == "第二学期"))
{
strTerm = "第二学期";
}
string strid_ZXXsPYJH= clsPYJH_XsPYJH.funGetFldValue("PYJH_ZXXsPYJH","id_ZXXsPYJH","XH='"+strXH+"'")[0].ToString();
string strid_ZXXsPYJHCourse= clsPYJH_XsPYJHCourse.funGetFldValue("PYJH_ZXXsPYJHCourse","id_ZXXsPYJHCourse"," id_ZXXsPYJH='"+strid_ZXXsPYJH+"' and KCH='"+strKCH+"'")[0].ToString(); clsStuScore objStuScore=new clsStuScore();
objStuScore.id_XsScore=clsCommForWebForm.GetMaxStrId("StuScore","id_XsScore",8,"");
objStuScore.id_ZXXsPYJHCourse=strid_ZXXsPYJHCourse;
objStuScore.XH=strXH;
objStuScore.Score=int.Parse(strScore);
objStuScore.ScoreLevel=strScoreLevel;
objStuScore.Year=strYear;
objStuScore.KCH = strKCH;
objStuScore.Term=strTerm;
objStuScore.OperatorID=Session["UserId"].ToString();
objStuScore.OperatorDate=DateTime.Now.ToString("yyyy-MM-dd");
if(dr["课程成绩"].ToString()!="" && dr["课程等第"].ToString()=="")
objStuScore.id_DRFS="01";
if(dr["课程成绩"].ToString()=="" && dr["课程等第"].ToString()!="")
objStuScore.id_DRFS="02";
objStuScore.id_Status="01";
objStuScore.AddNewRecord();


}
}
}
this.Label1.Text="导入成功!!";
}
红色的部分是替换成你要导入的数据
wenmingcool 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jinjazz 的回复:]
让系统自动监视文件夹,并把文件夹下面的excel文件导入到sql中
http://blog.csdn.net/jinjazz/archive/2008/07/29/2730135.aspx
[/Quote]
这个好复杂啊,我要自己上传excel的
wenmingcool 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 drummery 的回复:]
看一下这篇帖子。

我这里有一段代码也是实现导入的,基本思路是首先用DataAdapter把Excel文件读入DataSet(这个函数是比较通用的),然后再通过遍历DataSet中表格的方式插入数据库,就是纯的SQL操作了,有兴趣可以参考一下:

internal class CExcelImportHelper
{
// 我的这个地方的连接串跟你的有些出入,你不妨试一下这个。 const string CONNECTION_STRING_FORMAT = "Provider = Microsoft.Je…
[/Quote]
请问文件名是哪个变量
jinjazz 2008-09-23
  • 打赏
  • 举报
回复
让系统自动监视文件夹,并把文件夹下面的excel文件导入到sql中
http://blog.csdn.net/jinjazz/archive/2008/07/29/2730135.aspx
wenmingcool 2008-09-23
  • 打赏
  • 举报
回复
我是想实现这样一个功能,用户上传一个.xls文件,就可以根据这个文件更新后台的SQL
drummery 2008-09-23
  • 打赏
  • 举报
回复
看一下这篇帖子

我这里有一段代码也是实现导入的,基本思路是首先用DataAdapter把Excel文件读入DataSet(这个函数是比较通用的),然后再通过遍历DataSet中表格的方式插入数据库,就是纯的SQL操作了,有兴趣可以参考一下:

internal class CExcelImportHelper
{
// 我的这个地方的连接串跟你的有些出入,你不妨试一下这个。 const string CONNECTION_STRING_FORMAT = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = {0}; Extended Properties=Excel 8.0";
const string TMP_UPLOAD_PATH = "~/res/tmp";

// Reads the content of XLS file into dataset object.
public static DataSet GetDataSetFromExcel(string physicalPath, string commandString)
{
DataSet ds = null;

using (OleDbConnection conn = new OleDbConnection(string.Format(CONNECTION_STRING_FORMAT, physicalPath)))
{
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = commandString;
using (OleDbDataAdapter adp = new OleDbDataAdapter(cmd))
{
try
{
ds = new DataSet();
adp.Fill(ds);
}
catch
{
throw;
}
finally
{
if (cmd != null)
{
cmd.Dispose();
cmd = null;
}
}
}
}

return ds;
}

}
wenmingcool 2008-09-23
  • 打赏
  • 举报
回复
不好意思 上午被老板叫走了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧