在佩特来售后管理系统流程中,其中有一个节点是故障分析,也就是将发回来的整机进行故障分析,传统的方法是将每个整机的故障信息录入一个Excel表,表格Excel样式:
这里是将Excel转换成模板页,然后根据需要替换模板中的标签,将功能完整展示,下面介绍在这个功能在项目中实现步骤:
1.将Excel转换为网页
打开Excel文档,单击菜单栏中的“文件”,找到“另存为”,如图所示。在"另存为" 窗口的“保存类型”,下拉菜单中找到“单个文件网页”。名称起自己想起的。
2.修改模板页
先看一下将Excel中模板头部及尾部生成的静态模板页(htm页),页面#号显示的部分都是需要替换的标签:
看一下这部分的代码实现,这些就是简单的HTML代码,由EXCEL转换的网页代码略微修改了下:
<body style="width: 95%; margin: 0 auto; padding: 20px;"> <form name="form" method="post" action="#"> [#ChaiFenID#] <table border="1px" style="border-collapse: collapse;"> <tr style="text-align: center;"> <td colspan="15" class="style1"> 起动机故障分析表(A类) </td> </tr> <tr> <td colspan="2" class="style2"> 出厂二维 </td> <td colspan="5" class="style3"> [#CCEWM#] </td> <td colspan="3" class="style2"> 售后二维码 </td> <td colspan="5" class="style3"> [#SHEWM#] </td> </tr> <tr> <td rowspan="2" class="style5"> 信息 </td> <td class="style6"> 反馈单位 </td> <td colspan="3" class="style7"> [#FKDW#] </td> <td class="style6"> 反馈日期 </td> <td colspan="2" class="style7"> [#FKRQ#] </td> <td class="style5"> 型号 </td> <td colspan="2" class="style7"> [#XH#] </td> <td class="style5"> 序列号 </td> <td colspan="3" class="style7"> [#XLH#] </td> </tr> <tr> <td class="style6"> 三包机 </td> <td class="style5"> [#SBJ#] </td> <td class="style6"> 零公里机 </td> <td class="style6"> 外观照片 </td> <td colspan="5" class="style8"> </td> <td colspan="3" class="style5"> 性能是否正常 </td> <td colspan="2" class="style10"> <input id="Radio1" type="radio" name="是" value="是" />是 <input id="Radio2" type="radio" valule="否" />否 </td> </tr> <tr> <td class="style5"> 故障<br /> 部件 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> <td class="style6"> 故障现象 </td> <td class="style5"> 故障<br /> 现象 </td> </tr> [#Body#] <tr> <td rowspan="2" class="style5"> 其它<br /> J </td> <td class="style4"> 1用户解体 </td> <td class="style5"> </td> <td colspan="2" class="style4"> 缺件要备注 </td> <td class="style4"> 2进异物 </td> <td class="style5"> </td> <td colspan="2" class="style4"> 进何异物要备注 </td> <td class="style4"> 3进尘土 </td> <td class="style5"> </td> <td class="style4"> 4进水 </td> <td class="style5"> </td> <td class="style4"> 5进油 </td> <td class="style5"> </td> </tr> <tr> <td class="style4"> 6错装 </td> <td class="style5"> </td> <td colspan="2" class="style5"> </td> <td class="style4"> 7穿钉断 </td> <td class="style5"> </td> <td class="style4"> 8整机锈蚀 </td> <td class="style5"> </td> <td class="style4"> </td> <td class="style5"> </td> <td class="style4"> </td> <td class="style5"> </td> <td class="style5"> </td> <td class="style5"> </td> </tr> <tr> <td class="style5"> 备注<br /> K </td> <td class="style4"> 1 </td> <td class="style5"> </td> <td class="style4"> 2 </td> <td class="style5"> </td> <td class="style4"> 3 </td> <td class="style5"> </td> <td class="style4"> 4 </td> <td class="style5"> </td> <td class="style4"> 5 </td> <td class="style5"> </td> <td class="style4"> 6 </td> <td class="style5"> </td> <td class="style4"> 7 </td> <td class="style5"> </td> </tr> <tr> <td colspan="15" class="style11"> 注解:请在相应故障现象后空格内“√”、零件故障现象有照片存档的请用圆圈圈示前面数字编号。 </td> </tr> <tr> <td class="style5"> </td> <td colspan="2" class="style12"> 分析人: </td> <td colspan="4" class="style12"> </td> <td class="style12"> </td> <td colspan="3" class="style12"> 分析日期: </td> <td colspan="3" class="style12"> </td> <td class="style12"> </td> </tr> </table> <input type="button" name="query" onclick="return doSubmit();" language="javascript" value="提交" /> </form> </body>
3.ASP.NET读取模板页
ASP.NET读取模板页的方法如下,访问此页面的效果与生成的模板页一样:
string mbPath = Server.MapPath("FaultMangaeTemplate.htm"); //模板页 Encoding code = Encoding.GetEncoding("gb2312"); //字符编码 StreamReader sr = null; string str = null; //读取 try { sr = new StreamReader(mbPath, code); str = sr.ReadToEnd(); str= str.Replace("[#Body#]", tableBody); //Replace方法,替换模板中需要替换的标签 str = str.Replace("[#FKDW#]", enWXJD.DLSName); str = str.Replace("[#FKRQ#]", enWXJD.DDDate); str = str.Replace("[#XH#]", ljxh); str = str.Replace("[#ChaiFenID#]", "<input id=\"hidChaifenID\" type=\"hidden\" value=\"" + chaifenid + "\"/>"); str = str.Replace("[#SBJ#]", "是"); } catch (Exception ex) { throw ex; } finally { sr.Close(); } Response.Clear(); Response.Write(str); Response.End();
上面生成的模板部分有些标签,看一下页面主体部分标签替换的html代码:
/// <summary> ///结合故障部件及部件故障信息,生成html /// </summary> private string bindGZJBJXX() { string strHTML=""; DataTable dtGZBJ = new BT_LJGZ_GZManage().QueryAllGZBJByGZZL("起动机"); for (int i = 0; i < dtGZBJ.Rows.Count; i++) { if (i == 0) { strHTML = "<tr> <td class=\"style5\""; } else { strHTML += "<tr> <td class=\"style5\""; } strHTML += " rowspan=\""; DataTable dtGZXX = new BT_LJGZ_GZManage().QueryAllGZXXByGZBJ(Convert.ToInt32(dtGZBJ.Rows[i]["ID"])); double rowspan = Math.Ceiling((double)dtGZXX.Rows.Count / (double)7); //每行显示7个故障信息 strHTML += Convert.ToString(rowspan); strHTML += "\">"; strHTML += Convert.ToString(dtGZBJ.Rows[i]["GZBJ"]); strHTML += "</td>"; for (int j = 0; j < dtGZXX.Rows.Count; j=j+7) { if (j % 7 == 0) { if (j != 0) { strHTML += "<tr>"; } for (int z = j; z < j + 7; z++) { if (z < dtGZXX.Rows.Count) { strHTML += "<td class=\"style4\">"; strHTML += Convert.ToString(dtGZXX.Rows[z]["GZMC"]); strHTML += "</td>"; strHTML += "<td class=\"style5\">"; strHTML += "<input value=\"" + dtGZXX.Rows[z]["ID"].ToString() + "\""; strHTML += " name=\"input\" type=\"checkbox\" />"; strHTML += "</td>"; } else { strHTML += "<td class=\"style4\">"; strHTML += "</td>"; strHTML += "<td class=\"style5\">"; strHTML += "</td>"; } } strHTML +="</tr>"; } } } return strHTML; }
下面看一下,功能实现的页面效果图:
这个功能就简单介绍到这里了,之所以会写下这篇博客,是由于这个功能的设计与实现是第一次做,刚开始实现这个功能的时候不知道从何入手,完成了发现其实它挺简单的,所有的经验都来自于经历,经历的多了,经验也就会多了!
时间: 2024-11-03 05:32:31