上篇文章中大概的实现了第一个需求,虽然没有正式的效果出来,但总归思路是这样的,具体实现代码后面会提供。
今天我们主要实现需求分析的第二点和第三点:导入数据模块及修改数据
在网上我们可以找到ASP.NET 导入Excel表现在代码,只要拿过来用就可以了,在做导入功能之前,我们有必要了解导入的数据的结果是什么样的,因为我们导入的数据最后是存入数据库的,所以我们需要构建表的结果以对应导入的数据。
下面是数据的截图
下面就表中的一些字段进行说明:
Boltid是设备的标识
Boltname:是设备的类型
Asmid:也是一个标示
Boltnum:设备数量
A_stand:角度标准值
A_max:角度最大值
A_min:角度最小值
T_stand:扭矩标准值
T_max:扭矩最大值
T_min:扭矩最小值
Qrkstatic:某个静态数据
Techpara:设备参数
VIN:设备号
Dataid:设备标识
Torque:扭矩
Angle:角度
Ok:是否可用
Gettingtime:生产时间
Logintime:登录时间
Workerid:员工号
于是我们就可以设计表的结构了,
对应的表结构如下:
CREATE TABLE [dbo].[BoltData](
[id] [int] IDENTITY(1,1) NOT NULL,
[vin] [varchar](100) NULL,
[dataid] [float] NULL,
[torque] [float] NULL,
[angle] [float] NULL,
[ok] [float] NULL,
[gettingtime] [datetime] NULL,
[logintime] [datetime] NULL,
[workerid] [varchar](16) NULL,
CONSTRAINT [PK_BoltData] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[BoltInfo](
[id] [int] IDENTITY(1,1) NOT NULL,
[boltid] [varchar](50) NULL,
[boltname] [varchar](50) NULL,
[asmid] [float] NULL,
[boltnum] [int] NULL,
[a_stand] [int] NULL,
[a_max] [int] NULL,
[a_min] [int] NULL,
[t_stand] [int] NULL,
[t_max] [int] NULL,
[t_min] [int] NULL,
[qrkstation] [varchar](50) NULL,
[techpara] [varchar](50) NULL,
CONSTRAINT [PK_BoltInfo] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
下面来看一下具体的导入程序及实现方法,详细的就不说了,就看主要的代码了。
{
string File_ExName = File_Name.Substring(File_Name.LastIndexOf(".") + 1);//扩展名
if (File_ExName != "xls")
{
return;
}
else
{
//上传EXCEL文件到ExcelFile目录
DateTime now = DateTime.Now;
string NewName = now.ToShortDateString() + now.Hour.ToString() + now.Minute.ToString() + now.Second.ToString() + "." + File_ExName;
string filePath = "ExcelFile/" + NewName;
this.flpImportPath.PostedFile.SaveAs(Server.MapPath(@filePath));
//获取EXCEL文件,执行导入
string excelConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(filePath) + ";Extended Properties=Excel 8.0";
string excelCmdstr = string.Format("select * from [BoltData$]");
string Error = "";
try
{
OleDbConnection oleDbConnection = new OleDbConnection(excelConnect);
oleDbConnection.Open();
OleDbCommand excelCmd = new OleDbCommand(excelCmdstr, oleDbConnection);
OleDbDataAdapter excelDa = new OleDbDataAdapter(excelCmd);
DataTable edt = new DataTable();
excelDa.Fill(edt);
int i = 0;
//追加导入
BLL.BoltData b = new BLL.BoltData();
foreach (DataRow dr in edt.Rows)
{
Model.BoltData model = new Model.BoltData();
try
{
model.vin = dr[0].ToString();
model.dataid = Convert.ToInt32(dr[1]);
model.torque = dr[2].ToString();
model.angle = dr[3].ToString();
model.ok = Convert.ToInt16(dr[4]);
model.gettingtime = Convert.ToDateTime(dr[5]);
model.logintie = Convert.ToDateTime(dr[6]);
model.workerid = dr[7].ToString();
b.Add(model);
}
catch (Exception e1)
{
Response.Write("失败:" + model.vin + "_" + model.dataid + "");
}
}
this.labIsUpload.Text = "操作完成!";
//删除临时的EXCEL文件
oleDbConnection.Close();
}
catch (Exception ex)
{
Response.Write("<BR>");
Response.Write(ex.Message);
}
//导入结束
}
}
else
{
return;
}