package UIB.UIB03.ZBS; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import jxl.Workbook; import java.io.File; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** * * @desc 质保书引擎,负责获取模板、选择填充方式 * @author meiguiping * @date 2010 5:18:02 PM */ public class QltyGuaranteeEngine implements IQltyGuaranteeEngine { private HashMap mapHead; private DataRowList[] drlChem; private DataRowList[] drlQlty; private String tmplNO; public QltyGuaranteeEngine(){} public QltyGuaranteeEngine(String tmplNO ,HashMap mapHead, DataRowList[] drlChem , DataRowList[] drlQlty) { this.tmplNO = tmplNO;//模板号 this.mapHead = mapHead;//表头信息集合 this.drlChem = drlChem;//成分信息集合 this.drlQlty = drlQlty;//材质信息集合 } public OutputStream getOutputStream(InputStream is) throws Exception { OutputStream os = this.getWorkBookStream(is); return os; } /** * @desc 读取输入流,填入数据后返回输出流 * @param is * @return * @throws Exception */ private OutputStream getWorkBookStream(InputStream is) throws Exception { OutputStream os = new ByteArrayOutputStream();//建立输出流,填入数据的EXCEL形成该输出流 Workbook wBook = Workbook.getWorkbook(is);//获取EXCEL对象,生成工作薄 //Workbook wBook = Workbook.getWorkbook(new File("E:\\a.xls")); WritableWorkbook wwBook = Workbook.createWorkbook(os, wBook);//创建可操作副本 WritableSheet wSheet = wwBook.getSheet(0);//获取第0个工作表 IQltyGuaranteeBuilder explorer = null; if("A".equals(tmplNO.substring(0,1))) { //A类型质保书...... explorer = new QltyGuaranteeBuilderA(wSheet); } else if("B".equals(tmplNO.substring(0,1))) { //B类型质保书...... explorer = new QltyGuaranteeBuilderB(wSheet); } explorer.buildQltyGuarantee(tmplNO, mapHead, drlChem, drlQlty); wwBook.write(); os.close(); wwBook.close(); wBook.close(); return os; } }