本文主要是介绍总结前夕,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我做了两个比较有意思的模块
1.微信推送
2.打印模板
代码已经能够看懂,流程也能理顺,但是对于架构层面还是不了解,打算从架构层面(或者是流程)来整理。
效果:点击 打印文件 按钮,出现打印预览,并且页面数据填入到模板中
点击按钮 触发 js事件,
js代码跳转到 新的html,
在 新的html页面 的 js代码中发送http请求到ashx(一般处理程序)
this.DownloadPrintFile = function (entityid, logicalname, userid, successCallBack, errorCallBack) {debugger; var url = "https://" + window.location.hostname + ":8099/DownloadPrintFile.ashx?id=" + entityid+"&logicalname="+logicalname+"&userid="+userid; $.ajax({url: url ,type: 'post',dataType: 'json',async: true, success: function (res) { successCallBack(res);},error: function (e) {errorCallBack(e);}});
}
ashx(一般处理程序)文件可以引用其他dll或者调用服务,怎么写都ok
先拿到模板文件,
//将文件copy到新路径下,isrewrite表示是否覆盖已有文件
System.IO.File.Copy(path, newpath, isrewrite);
新建 workbook,对workbook操作,
将页面中的数据从数据库中以XML格式取出,(使用存储过程更方便)涉及到sql 的 FOR XML PATH('node'), ROOT('root'),TYPE
,详细内容可以参考SQL Server XML基础学习<1>之–FOR XML PATH
数据替换,(属性名与XML节点名相同时替换)详细见代码逻辑,
再回写到excel文件
HSSFWorkbook wk = null;
using (FileStream fs = File.Open(templatefilePath,FileMode.Open,FileAccess.Read))
{//把xls文件读入workbook变量里,之后就可以关闭了wk = new HSSFWorkbook(fs);//fs.Close(); 没有必要写,using会自动关闭
}
wk.SetSheetName(0, sheetname);
ISheet sheet = wk.GetSheet(sheetname);
//取出相应cell中的数据
var cell = sheet.GetRow(rowIndex).GetCell(columnIndex);if (cellvalue.Contains("[#HeadNode.") && cellvalue.Contains("#]"))
{var elementName = cellvalue.Replace("[#HeadNode.", "").Replace("#]", "");//表头元素var element = headNode.SelectSingleNode(elementName) as XmlElement;if (element != null){cell.SetCellValue(element.InnerText);}
}
//workbook回写excel文件
using (FileStream fileStream = File.Open(templatefilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{wk.Write(fileStream);
}
将excel中行向下移动,具体参见API
sheet.shiftRows(startRow + 1, sheet.getLastRowNum(), rows,true,false);
newRow.Height = sourceRow.Height;
这篇关于总结前夕的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!