引用第三方jar包:
poi-3.9.jar poi核心包
String htmlContent = "";//这是用来存储html页面的字符串
try {
//request.setCharacterEncoding("UTF-8");
List<DataRow> dataList = resultVo.getResults();
//从数据库里面查询出来了数据
if(dataList != null && dataList.size()>0){
DataRow dr = dataList.get(0);
String name = dr.getString("name");//应聘人姓名
String academic = dr.getString("academic");//学历
String school = dr.getString("school");//毕业院校
String profession = dr.getString("profession");//所学专业
String work_address = dr.getString("work_address");//工作地点
String recruit_name = dr.getString("recruit_name");//职位名称
String birthdate = dr.getString("birthdate");//职位名称
String telephone = dr.getString("telephone");//手机号码
String email = dr.getString("email");//电子邮箱
String expected_salary = dr.getString("expected_salary");//期望薪资
String personal_img = dr.getString("expected_salary");//个人照片
//从数据库中获得数据,将oracle中的clob数据类型转换成string类型
/* Method method = dr.get("skill").getClass().getMethod("getVendorObj",new Class[]{});
CLOB skill = (CLOB)method.invoke(dr.get("skill"));
String skillStr = skill.getSubString((long) 1, (int) skill.length());*///个人技能
String skillStr = dr.getString("skill");
//获取根目录
String rootPath = Application.getRootPath();
String newRootPath = rootPath.replace("\\", "/");
newRootPath = newRootPath.substring(0, newRootPath.length()-1);
//正式形成一个html
htmlContent += "<html>";//拼接注意加上<html>
htmlContent += "<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'/></head><body>";
htmlContent += "<div style='width: 593px; font-size: 24px; font-weight: bold; margin-top: 5px'>应聘人员简历</div>";
htmlContent += "<div style='width: 593px; margin-top: 10px'>";
htmlContent += "<span style='font-size: 12px; font-weight: bold; text-align: center;'>工作地点: "+work_address+" </span>";
htmlContent += "<span style='font-size: 12px; font-weight: bold; text-align: center;'>工作岗位: "+recruit_name+"</span></div>";
htmlContent += "<table style='width: 593px; margin-top:20px' border='1px solid;'>";
htmlContent += "<tr><td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>姓 名:</td>";
htmlContent += "<td style='width: 135px; height: 40px; text-align: left; font-size: 12px;'> "+name+"</td>";
htmlContent += "<td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>学 历:</td>";
htmlContent += "<td style='width: 96px; height: 40px; text-align: left; font-size: 12px;'> "+academic+"</td>";
htmlContent += "<td style='width: 146px' rowspan='4'><img src='"+(newRootPath+personal_img)+"' style='width:146px; height: 160px'/></td> </tr>";
htmlContent += "<tr><td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>毕业院校:</td>";
htmlContent += "<td style='width: 135px; height: 40px; text-align: left; font-size: 12px;'> "+school+"</td>";
htmlContent += "<td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>联系电话:</td>";
htmlContent += " <td style='width: 96px; height: 40px; text-align: left; font-size: 12px;'> "+telephone+"</td></tr>";
htmlContent += "<tr><td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>专 业:</td>";
htmlContent += "<td style='width: 135px; height: 40px; text-align: left; font-size: 12px;'> "+profession+"</td>";
htmlContent += "<td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>电子邮箱:</td>";
htmlContent += " <td style='width: 96px; height: 40px; text-align: left; font-size: 12px;'> "+email+"</td></tr>";
htmlContent += "<tr><td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>出生日期:</td>";
htmlContent += "<td style='width: 135px; height: 40px; text-align: left; font-size: 12px;'> "+birthdate+"</td>";
htmlContent += "<td style='width: 106px; height: 40px; text-align: center; font-size: 12px; font-weight: bold;'>期望薪资:</td>";
htmlContent += " <td style='width: 96px; height: 40px; text-align: left; font-size: 12px;'> "+expected_salary+"</td></tr>";
htmlContent += "<tr><td colspan='5' style='text-align: left; font-size: 18px; font-weight: bold; height: 40px;'>工作经历</td></tr>";
htmlContent += "<tr><td colspan='5'><div style='text-align: left; font-size: 12px; height: 545px;'>"+experienceStr+"</div></td></tr>";
//插入分页符
htmlContent += "<span style='font-size:16px;line-height:150%;mso-fareast-font-family:宋体;mso-font-kerning:1px;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always'></span>";
htmlContent += "<p style='line-height:150%'><span style='font-size:16px;line-height:150%'><o:p> </o:p></span></p>";
htmlContent += "<tr><td colspan='5' style='text-align: left; font-size: 18px; font-weight: bold; height: 40px;'>教育经历</td></tr>";
htmlContent += "<tr><td colspan='5'><div style='text-align: left; font-size: 12px; height: 378px;'>"+educationStr+"</div></td></tr>";
htmlContent += "<tr><td colspan='5' style='text-align: left; font-size: 18px; font-weight: bold; height: 40px;'>专业技能</td></tr>";
htmlContent += "<tr><td colspan='5'><div style='text-align: left; font-size: 12px; height: 380px;'>"+skillStr+"</div></td></tr>";
htmlContent += "</body>";
htmlContent += "</html>";
byte b[] = htmlContent.getBytes("utf-8");
ByteArrayInputStream bais = new ByteArrayInputStream(b);
POIFSFileSystem poifs = new POIFSFileSystem();
DirectoryEntry directory = poifs.getRoot();
DocumentEntry documentEntry = directory.createDocument("WordDocument", bais);
//输出文件
String filename = getUuid();
response.reset();
response.setHeader("Content-Disposition","p_w_upload;filename=" +
new String( (filename + ".doc").getBytes(),
response.setContentType("application/msword;charset=UTF-8");
//只是生成一个文件就只用这个就可以了
// OutputStream ostream = response.getOutputStream();
//输出到本地文件的话,new一个文件流
// OutputStreamWriter wri = new OutputStreamWriter(new FileOutputStream(newRootPath+"/exportDocs/"+filename+".doc"), "utf-8");
FileOutputStream ostream = new FileOutputStream(newRootPath+"/exportDocs/"+filename+".doc");
poifs.writeFilesystem(ostream);
bais.close();
// wri.close();
ostream.close();
}
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
注意: 这种生成word 图片之类的需要以流的方式写入
像这种table展示的话 没有边框
转载于:https://blog.51cto.com/2015arong/1712695