这个异常出现后,其实就是jar包的原因,
xercesImpl和xerces只能有一个包,并且版本可能有要求。
其他的原因以后发现再补充。
我用这个主要就是用于导出excel文件(使用模板),目前来看使用模板是最简单的导出方式。
模板:
private void export(List<GridWholeTCA> list, HttpServletRequest request,HttpServletResponse response) throws Exception{
//获得模版
String tempFileName = request.getSession().getServletContext().getRealPath("/template");
//将结果放入这个list中
List values = new ArrayList();
Map beans = new HashMap();
Date date = new Date();
SimpleDateFormat simpl = new SimpleDateFormat("yyyyMMddHHmmss");
String currntTime = simpl.format(date);
tempFileName += "/gridWholeTCA.xls";
//导出列表名
String fileName = currntTime+"列表";
values.add(list);
beans.put("values", values);
//文件名称统一编码格式
fileName = URLEncoder.encode(fileName, "utf-8");
//生成的导出文件
File destFile = File.createTempFile(fileName, ".xls");
//transformer转到Excel
XLSTransformer transformer = new XLSTransformer();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//将数据添加到模版中生成新的文件
transformer.transformXLS(tempFileName, beans, destFile.getAbsolutePath());
//将文件输入
InputStream inputStream = new FileInputStream(destFile);
// 设置response参数,可以打开下载页面
response.reset();
//设置响应文本格式
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
//将文件输出到页面
ServletOutputStream out = response.getOutputStream();
bis = new BufferedInputStream(inputStream);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// 根据读取并写入
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (ParsePropertyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//使用完成后关闭流
try {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
} catch (IOException e) {
}
}
}