在佩特来售后管理系统流程中,其中有一个节点是故障分析,也就是将发回来的整机进行故障分析,传统的方法是将每个整机的故障信息录入一个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;
}
下面看一下,功能实现的页面效果图:
这个功能就简单介绍到这里了,之所以会写下这篇博客,是由于这个功能的设计与实现是第一次做,刚开始实现这个功能的时候不知道从何入手,完成了发现其实它挺简单的,所有的经验都来自于经历,经历的多了,经验也就会多了!
原文地址:http://blog.csdn.net/mazhaojuan/article/details/38758145