需求:
在客户端可以连接默认打印机打印服务端文件
原始模板
开发思路:
1、根据模板生成新的文件,并保存至服务器
2、将生成的文件转化成html
3、客户端打印html文件
本来想用freemarker进行套打,但是不知道什么原因,生成的文件在转化过程中一直报类型转换异常,找了好多解决办法,但是都没办法解决,忘后来人解决!!!!!!!!!!!
最后没办法,只能有原始办法,对模板中的标签进行替换
第一步:根据模板生成新的文件
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class ExcelUtil {
/**
* 替换Excel2003模板文件内容
* @param map
* 需要替换的标签建筑队形式
* @param intPath
* Excel模板文件路径
* @param outPath
* Excel生成文件路径
*/
public static boolean replaceExcel2003Value(Map map, String intPath, String outPath) {
boolean flag = true;
try {
FileInputStream fs = new FileInputStream(intPath);
//EXCEL xlsx格式与xls格式用的类是不同的,xlsx用的是XSSFWorkbook
HSSFWorkbook workbook = new HSSFWorkbook(fs);
HSSFWorkbook wb = (HSSFWorkbook) workbook;
HSSFSheet sheet;
//由于个人使用是多sheet故获取excel对象后进行sheet遍历,分别对每个sheet里面的标签进行替换
for (int j = 0; j < wb.getNumberOfSheets(); j++) {
sheet = workbook.getSheetAt(j);
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
if (row != null) {
int num = row.getLastCellNum();
for (int i = 0; i < num; i++) {
HSSFCell cell = row.getCell(i);
if (cell != null) {
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
}
if (cell == null || cell.getStringCellValue() == null) {
continue;
}
String value = cell.getStringCellValue();
if