ASP.NET实际项目演练(2)

上篇文章中大概的实现了第一个需求,虽然没有正式的效果出来,但总归思路是这样的,具体实现代码后面会提供。

今天我们主要实现需求分析的第二点和第三点:导入数据模块及修改数据

 

在网上我们可以找到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]

下面来看一下具体的导入程序及实现方法,详细的就不说了,就看主要的代码了。

ExpandedBlockStart.gif 代码
if  (File_Name.Length  !=   0   &&  File_Size  >   0 )
        {
            
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 ;
        }

 

 在看具体的需求之前,我们先来看看MSChart的一些知识准备。

 

一、 MSChart

1.什么是MSChart:MSChart控件与一个数据网格(DataGrid对象)关联。该数据网格存放了要显示的数据。数据网格也可以包含用于图表中标识系列或类别的标签。图表应用程序设

计者在数据网格中插入数据或从报表或矩阵中输入数据。

2.安装MSChart:须装了Microsoft .NET Framework 3.5 SP1以后才能装MSChart

装好后,会发现一个目录,打开vs2008或vs2010,打开某个web页面的设计页面,在工具栏中添加选项卡命名为图标工作,或者在现有的选项卡中右击选择“添加项”,导航到C:\Program Files\Microsoft Chart Controls\Assemblies,选择System.Web.DataVisualization.dll,将图标工具添加到选项卡中,方便以后拖拽使用。

1. MSChart 图表类型

4.一些属性

ChartAreas:增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。

AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。

AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

AlignWithChartArea:参照对齐的绘图区名称。

InnerPlotPosition:图表在绘图区内的位置属性。

Auto:是否自动对齐。

Height:图表在绘图区内的高度(百分比,取值在0-100)

Width:图表在绘图区内的宽度(百分比,取值在0-100)

X,Y:图表在绘图区内左上角坐标

Position:绘图区位置属性,同InnerPlotPosition。

Name:绘图区名称。

Axis:坐标轴集合

Title:坐标轴标题

TitleAlignment:坐标轴标题对齐方式

Interval:轴刻度间隔大小

IntervalOffset:轴刻度偏移量大小

MinorGrid:次要辅助线

MinorTickMark:次要刻度线

MajorGrid:主要辅助线

MajorTickMark:主要刻度线

DataSourceID:MSChart的数据源。

Legends:图例说明。

Palette:图表外观定义。

Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

Label:数据点标签文本

LabelFormat:数据点标签文本格式

LabelAngle:标签字体角度

Name:图表名称

Points:数据点集合

XValueType:横坐标轴类型

YValueType:纵坐标轴类型

XValueMember:横坐标绑定的数据源(如果数据源为Table,则填写横坐标要显示的字段名称)

YValueMembers:纵坐标绑定的数据源(如果数据源为Table,则填写纵坐标要显示的字段名称,纵坐标可以有两个)

ChartArea:图表所属的绘图区域名称

ChartType:图表类型(柱形、饼形、线形、点形等)

Legend:图表使用的图例名称

Titles:标题集合。

width:MSChart的宽度。

height:MSChart的高度。

二、 MSChart实际演练

具体的实例可以参考附件的具体Demo,这个Demo还是比较完整的。

 

好了,现在来看具体的需求。如下图是具体的算法,

 

 这个是关键的sql语句,如有不明白的地方可以留言或者发邮件给我

string cmdText = "select CONVERT(varchar(12), a.gettingtime, 111) as 'myTime'," +

                "a.dataid,(4*(b.t_max-b.t_min)-ABS(2*AVG(a.torque)-(b.t_max+b.t_min)))/(24*STDEV(a.torque)) as 'cpk' " +

                "from boltdata a,BoltInfo b where a.dataid = b.boltid and a.dataid='" + dataid + "' and a.ok='1' and a.gettingtime BETWEEN '" + time1.Text + "' AND '" + time2.Text + "' " +

                "group by CONVERT(varchar(12), a.gettingtime, 111), a.dataid,b.t_max,b.t_min,b.t_stand"; 

 

PS:由于时间原因,文章写的比较匆忙,望见谅。

 

 附件:

MsChart官方Demo、 MsChartBolt数据程序下载(DB文件在db文件下)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值