- package com.wdit.linsheng.modules.cms.utils;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.List;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.http.client.utils.DateUtils;
- import org.apache.log4j.Logger;
- import org.apache.poi.hwpf.HWPFDocument;
- import org.apache.poi.hwpf.usermodel.Range;
- import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
- import org.apache.poi.xwpf.usermodel.XWPFDocument;
- import org.apache.poi.xwpf.usermodel.XWPFParagraph;
- import org.apache.poi.xwpf.usermodel.XWPFRun;
- import com.wdit.linsheng.common.config.Global;
- import com.wdit.linsheng.modules.cms.entity.Complain;
- public class WordUtil {
- staticLogger logger = Logger.getLogger(WordUtil.class);
- private staticWordUtil wordUtil =null;
- /**
- * 私有构造
- */
- private WordUtil() {
- }
- public static WordUtil getInstance() {
- if(wordUtil ==null) {
- wordUtil =new WordUtil();
- }
- return wordUtil;
- }
- /**
- * 方法描述:下载文件
- * @param response
- * @param rootPath
- * @param targetName
- * @param fileName
- * @param module
- * @throws IOException
- */
- public void downloadFile(String path, String downLoadFileName,HttpServletResponse response) {
- try {
- File file =new File(path);
- if(!file.exists()) {
- return;
- }
- file =newFile(path + downLoadFileName);
- InputStream fis =newBufferedInputStream(new FileInputStream(file));
- //buffer 中间缓冲池
- byte[] buffer =new byte[fis.available()];
- fis.read(buffer);
- fis.close();
- //保存为word
- //String tragetFileName = downLoadFileName + ".doc";
- // 清空response
- response.reset();
- // 设置response的Headerresponse.addHeader("Content-Disposition",
- "attachment;filename="+ downLoadFileName);//URLEncoder.encode());//, "UTF-8"
- // 设置response的Header 如果文件名参数中含有中文的写法
- //response.addHeader( "Content-Disposition",
- // "attachment;filename=" + new String(downLoadFileName.getBytes("gb2312"), "ISO8859-1"));
- response.addHeader("Content-Length",""+ file.length());
- OutputStream toClient =new BufferedOutputStream(response.getOutputStream());
- response.setContentType("text/plain");
- toClient.write(buffer);
- toClient.flush();
- toClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 创建 投诉热线 word文档
- * @param list
- * @param response
- * @return
- */
- public staticString createComplain(List list) {
- try {
- XWPFDocument doc =new XWPFDocument();
- XWPFParagraph p1 = doc.createParagraph();
- //设置段落左对齐
- p1.setAlignment(ParagraphAlignment.LEFT);
- XWPFRun r1 = p1.createRun();
- for (Complain complain : list) {
- r1.setText("时间:");
- r1.setText(DateUtils.formatDate(complain.getCreateDate(), "yyyy-MM-dd HH:mm:ss"));
- // r1.addBreak();r1.setText("地点:");
- r1.setText(complain.getAddress());
- // r1.addBreak();r1.setText("内容:");
- // r1.addBreak();
- r1.setText(complain.getContent());
- r1.setText("姓名:");
- r1.setText(complain.getName());
- // r1.addBreak();r1.setText("电话:");
- r1.setText(complain.getPhone());
- // r1.addBreak();r1.setText("是否公开:");
- r1.setText(complain.getIsPublic());
- // r1.addBreak();r1.setText("信息补充:");
- // r1.addBreak();
- r1.setText(complain.getYjComm());
- r1.setTextPosition(100);
- }
- String fileName = Global.getwebProjectPath() + File.separator +"doc"+ File.separator + list.get(0).getTitle() +".doc" ;
- File tempFile =new File(fileName);
- if (tempFile.exists()) {
- tempFile.delete();
- }
- FileOutputStream out=new FileOutputStream(fileName);
- doc.write(out);
- out.close();
- returnlist.get(0).getTitle() +".doc";
- } catch (Exception e) {
- logger.error("exportWordError:"+ e);
- e.printStackTrace();
- return null;
- }
- }
- /**
- * 利用模板创建投诉热线WORD
- * @param list
- * @return
- */
- public staticString createComplainWord(List list){
- try {
- String templatePath = Global.getWebProjectPath() + File.separator +"doc"+ File.separator +"compTemplete.doc";
- InputStream is=new FileInputStream(templatePath);
- HWPFDocument doc =newHWPFDocument(is);
- Range range = doc.getRange();
- Complain complain = list.get(0);
- //把range范围内的${param}替换为对应参数range.replaceText("${incidentDate}", DateUtils.formatDate(complain.getIncidentDate(),"yyyy-MM-dd HH:mm:ss"));
- range.replaceText("${location}", complain.getLocation());
- range.replaceText("${content}", complain.getContent());
- range.replaceText("${name}", complain.getName());
- range.replaceText("${phone}", complain.getPhone());
- range.replaceText("${isPublic}","1".equals(complain.getIsPublic())"是":"否");
- String fileName = Global.getWebProjectPath() + File.separator +"doc"+ File.separator + list.get(0).getTitle() +".doc" ;
- File tempFile =new File(fileName);
- if (tempFile.exists()) {
- tempFile.delete();
- }
- tempFile.createNewFile();
- OutputStream os =new FileOutputStream(fileName);
- //把doc输出到输出流中
- doc.write(os);
- closeStream(os);
- closeStream(is);
- returnlist.get(0).getTitle() +".doc";
- } catch (Exception e) {
- logger.error("exportWordError:"+ e);
- e.printStackTrace();
- return null;
- }
- }
- /**
- * 关闭输入流
- * @param is
- */
- private static voidcloseStream(InputStreamis) {
- if(is!=null) {
- try {
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * 关闭输出流
- * @param os
- */
- private static void closeStream(OutputStream os) {
- if(os !=null) {
- try {
- os.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-1961487.html