asp.net导入Excel表

本文介绍了一个简单的Excel数据导入系统实现方案,包括导入界面设计、数据读取及验证过程,并展示了如何将数据导入到数据库的具体代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导入Excel的界面

这个界面很简单,代码就不列出来了。
二、导入的代码
我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里。这里需要注意的是当程序在服务器运行时,要先把导入的文件上传到服务器上,否则不能导入,会出现莫名奇妙的错误,为了改这个错误当初弄了好久,希望大家不要走我的弯路啊。如果是在自己的机器上就不用上穿文件。
第二部分是选择相应的表,然后将数据导入到表里面,这部分很简单。
1、

try
{
InputDataBLLinput
=newInputDataBLL();
this.Label1.Text="";
if(this.FileUpload1.HasFile)
{
//stringfilename=this.FileUpload1.PostedFile.FileName.ToString().Trim();
DataTableinputdt=newDataTable();
intlen=this.FileUpload1.FileName.ToString().Trim().Length;
stringpath="~/temp/upfile/"+this.FileUpload1.FileName.ToString().Trim();
path=Server.MapPath(path);
this.FileUpload1.SaveAs(path);//上传文件
inputdt=input.InputExcel(path,this.FileUpload1.FileName.ToString().Trim().Substring(0,len-4),this.TextBox1.Text.Trim());

if(Session["inputdt"]!=null)
Session.Remove(
"inputdt");
Session.Add(
"inputdt",inputdt);
if(inputdt.Rows.Count>0)
{
this.GridView1.DataSource=inputdt;
this.GridView1.DataBind();
}

}

else
thrownewException("请选择导入表的路径");
}

catch(Exceptionex)
{
Response.Write(
"<scriptlanguage='javascript'>alert('"+ex.Message+"');</script>");
}


导入的函数

/**////<summary>
///导入数据到数据集中
///</summary>
///<paramname="Path"></param>
///<paramname="TableName"></param>
///<paramname="tablename2">如果这个有就以他为表名,没有的话就以TableName</param>
///<returns></returns>

publicDataTableInputExcel(stringPath,stringTableName,stringtablename2)
{
try
{
stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Path+";"+"ExtendedProperties=Excel8.0;";
OleDbConnectionconn
=newOleDbConnection(strConn);
conn.Open();
stringstrExcel="";
OleDbDataAdaptermyCommand
=null;
if(tablename2.Length>0&&!tablename2.Equals(string.Empty))
TableName
=tablename2;
strExcel
="select*from["+TableName+"$]";
myCommand
=newOleDbDataAdapter(strExcel,strConn);
DataTabledt
=newDataTable();
myCommand.Fill(dt);
conn.Close();
returndt;
}

catch(Exceptionex)
{
thrownewException(ex.Message);
}

}

二、将数据导入到数据库里
这部分其实很简单,就是插入数据。

if(this.DropDownList1.SelectedItem.Text.ToString().Equals("Material"))//导物料
{
newStockBaseBLL().ISUserModel("物料导入",Response,Request,Server);
MaterialBLLmaterial
=newMaterialBLL();
foreach(DataRowrowininputdt.Rows)//inputdt为刚刚从函数中返回的数据源
{
floatMaterialPrice=0.0f;
floatMaterialTaxPrice=0.0f;
floatTaxRate=0.0f;
floatMoneys=0.0f;
inttemp=0;
if(row["单价"].ToString().Trim()!="")
MaterialPrice
=float.Parse(row["单价"].ToString().Trim());
if(row["含税单价"].ToString().Trim()!="")
MaterialTaxPrice
=float.Parse(row["含税单价"].ToString().Trim());
if(row["税率"].ToString().Trim()!="")
TaxRate
=float.Parse(row["税率"].ToString().Trim());
if(row["金额"].ToString().Trim()!="")
Moneys
=float.Parse(row["金额"].ToString().Trim());

if(material.SelectMaterialsDynamic("MaterialID='"+row["物料长代码"].ToString()+"'","").Rows.Count<=0)//不存在,其实可以不要,因为编号是主键,如果相同则插不进去
temp=material.InsertMaterial(row["物料长代码"].ToString(),row["物料名称"].ToString(),row["单位"].ToString().Trim(),MaterialPrice,MaterialTaxPrice,TaxRate,Moneys,0);
else
NotIntoID
+=row["物料长代码"].ToString()+",";
if(temp>0)
index
+=temp;
temp
=0;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值