最近项目遇到一个需求,需要打印excel,然后将打印记录进行持久化,还要对excel中的参数进行计算。最开始的思路是,调用java自身的api—— javax.print包下面的打印功能,把excel转化为freemarker模板,网友们基本都是这样做的。但是,理想跟现实总是有差距的,这样做得到的结果是,调用的打印机始终都是与服务器连接的打印机,并且java支持的打印只能打印图片格式的,并不能打印文档,只好放弃。
然后换策略。另一种思路:前端页面上输入excel需要的内容,通过poi对excel进行读写,然后将excel转化成HTML页面返回给前端,前端页面调用打印机,这样任何一台电脑都可以打印啦~~
上代码:
1.前端页面:
![excel需要的输入的内容](https://img-blog.csdnimg.cn/20181206103256111.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW4xODQyODMyNTE5OQ==,size_16,color_FFFFFF,t_70)
2.更新excel
public void updateExcel(PrintVo printVo)throws Exception{
String filePath = productPath;
File excelFile = new File(filePath);
FileInputStream fileInputStream = new FileInputStream(excelFile);
HSSFWorkbook workbook = new HSSFW