word自定义格式 并下载

  1 /**
  2      *
  3      * @param pRun
  4      * @param 20   间距
  5      * @param fontSize   字体大小
  6      * @param bold     是否加粗
  7      * @param underLine    是否下划线
  8      * @param underLineColor 下划线的颜色
  9      * @param underLineStyle 下划线的样式  1
 10      */
 11     private static void setCommonRunStyle(XWPFRun pRun,int Textposition,int fontSize,boolean bold,boolean underLine,String underLineColor,int underLineStyle){
 12         pRun.setFontSize(fontSize);//设置字体大小
 13         pRun.setFontFamily("Courier"); // 设置使用何种字体
 14         pRun.setTextPosition(Textposition); // 设置上下两行之间的间距
 15         pRun.setBold(bold); // 设置加粗
 16
 17         CTRPr pRpr = null;
 18         if (pRun.getCTR() != null) {
 19             pRpr = pRun.getCTR().getRPr();
 20             if (pRpr == null) {
 21                 pRpr = pRun.getCTR().addNewRPr();
 22             }
 23         }
 24         if(underLine){
 25             CTUnderline u = pRpr.isSetU() ? pRpr.getU() : pRpr.addNewU();
 26             u.setVal(STUnderline.Enum.forInt(Math.abs(underLineStyle % 19)));
 27             if (underLineColor != null) {
 28                 u.setColor(underLineColor);
 29             }
 30         }
 31     }
 32
 33     /****
 34      *  word 中添加换行
 35      * @param i i必须要大于0   i为几  就是中间添加几个20的高度
 36      */
 37     private static void wordHeight(int j,XWPFDocument doc){
 38         for(int i=0;i<j;i++){
 39             XWPFParagraph kongP1= doc.createParagraph();
 40             XWPFRun kongP1Run = kongP1.createRun();
 41             setCommonRunStyle(kongP1Run,100,100,false,false,"666666",1);
 42             kongP1Run.setText("    ");
 43         }
 44     }
 45
 46
 47     /**
 48      * 下载计划书word
 49      * @author
 50      * @time
 51      * @description
 52      */
 53     public static String downloadPlanWord(HttpServletRequest request,HttpServletResponse response){
 54         LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
 55         Delegator delegator = (Delegator)request.getAttribute("delegator");
 56         GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
 57         Map<String, Object> outResult = ServiceUtil.returnSuccess();
 58         String startTime = request.getParameter("startTime");
 59         String endTime = request.getParameter("endTime");
 60         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 61         XWPFDocument doc = new XWPFDocument();
 62         try {
 63             //根据农户进行计划查询的分组  未执行的
 64             List<EntityCondition> Conds = FastList.newInstance();
 65             Conds.add(EntityCondition.makeCondition("executeStatusId", EntityOperator.EQUALS,"PPLECT_UNEXECUTED"));
 66             if(UtilValidate.isNotEmpty(startTime)){
 67                 Conds.add(EntityCondition.makeCondition("planStartTime",EntityOperator.GREATER_THAN_EQUAL_TO,Timestamp.valueOf(startTime+" 00:00:00")));
 68             }
 69             if(UtilValidate.isNotEmpty(endTime)){
 70                 Conds.add(EntityCondition.makeCondition("planStartTime",EntityOperator.LESS_THAN_EQUAL_TO,Timestamp.valueOf(endTime+" 00:00:00")));
 71             }
 72             List<GenericValue> planList = delegator.findList("MaterialProductionPlanInfo",
 73                     EntityCondition.makeCondition(Conds),null, null, null, false);
 74             if(UtilValidate.isEmpty(planList)){
 75                 XWPFParagraph noFarmer = doc.createParagraph();
 76                 noFarmer.setAlignment(ParagraphAlignment.CENTER);
 77                 noFarmer.setVerticalAlignment(TextAlignment.TOP);
 78                 XWPFRun noFarmerRun = noFarmer.createRun();
 79                 setCommonRunStyle(noFarmerRun,20,20,true,false,"666666",1);
 80                 noFarmerRun.setText("没有农户存在种植计划");
 81                 response.reset();
 82                 String fileName = "种植计划书.doc";
 83                 response.setContentType("application/x-msdownloadoctet-stream;charset=utf-8");
 84                 response.setHeader("Content-Disposition","attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8"));
 85                 OutputStream out = response.getOutputStream();
 86                 doc.write(out);
 87                 out.flush();
 88                 doc.write(out);
 89                 out.close();
 90                 return "error";
 91             }
 92             Map<String,List<GenericValue>> farmerMap = FastMap.newInstance();
 93             for(GenericValue plan:planList){
 94                 if(farmerMap.containsKey(plan.getString("farmerId"))){
 95                     farmerMap.get(plan.getString("farmerId")).add(plan);
 96                 }else{
 97                     List<GenericValue> planEntityList = FastList.newInstance();
 98                     planEntityList.add(plan);
 99                     farmerMap.put(plan.getString("farmerId"),planEntityList);
100                 }
101             }
102             int i =0;
103             XWPFParagraph titleP = null;
104             GenericValue farmerEntity = null;
105             for(String key : farmerMap.keySet()){
106                 farmerEntity = delegator.findOne("Farmer", false, UtilMisc.toMap("farmerId", key));
107                 planList = farmerMap.get(key);
108                 titleP = doc.createParagraph();
109                 if(i>0){
110                     titleP.setPageBreak(true);
111                 }
112                 i++;
113                 titleP.setAlignment(ParagraphAlignment.CENTER);// 设置字体对齐方式
114                 XWPFRun titlePRun = titleP.createRun(); // 第一页要使用p1所定义的属性
115                 setCommonRunStyle(titlePRun,40,20,true,false,"666666",1);
116                 titlePRun.setText("种植计划下达通知书");
117                 // 农户
118                 XWPFParagraph farmerP = doc.createParagraph();
119                 XWPFRun farmerRunLabel = farmerP.createRun();// 第一页要使用p1所定义的属性
120                 setCommonRunStyle(farmerRunLabel,20,16,false,false,"666666",1);
121                 farmerRunLabel.setText("农户:");
122                 XWPFRun farmerRun = farmerP.createRun();// 第一页要使用p1所定义的属性
123                 setCommonRunStyle(farmerRun,20,16,false,true,"666666",1);
124                 farmerRun.setText(farmerEntity.getString("farmerName"));
125                 //计划数目
126                 XWPFParagraph sizeP = doc.createParagraph();
127                 XWPFRun sizeRunLabel1 = sizeP.createRun();
128                 setCommonRunStyle(sizeRunLabel1,20,16,false,false,"666666",1);
129                 sizeRunLabel1.setText("    根据农场生产计划总体安排,对您提出的");
130                 XWPFRun sizeRunValue = sizeP.createRun();
131                 setCommonRunStyle(sizeRunValue,20,16,false,true,"666666",1);
132                 sizeRunValue.setText(String.valueOf(planList.size()));
133                 XWPFRun sizeRunLabel2 = sizeP.createRun();
134                 setCommonRunStyle(sizeRunLabel2,20,16,false,false,"666666",1);
135                 sizeRunLabel2.setText("座棚种植请求,现通知如下:");
136                 //空行
137                 wordHeight(1,doc);
138                 //种植计划
139                 int planIndex=0;
140                 for(GenericValue plan:planList){
141                     planIndex ++ ;
142                     XWPFParagraph planP = doc.createParagraph();
143                     planP.setVerticalAlignment(TextAlignment.TOP);
144                     XWPFRun farmFieldNameRun = planP.createRun();
145                     setCommonRunStyle(farmFieldNameRun,20,16,false,true,"666666",1);
146                     farmFieldNameRun.setText(plan.getString("farmFieldName"));
147
148                     XWPFRun planRunLabel1 = planP.createRun();
149                     setCommonRunStyle(planRunLabel1,20,16,false,false,"666666",1);
150                     planRunLabel1.setText("棚,种植品种");
151
152                     XWPFRun materialNameRun = planP.createRun();
153                     setCommonRunStyle(materialNameRun,20,16,false,true,"666666",1);
154                     materialNameRun.setText(plan.getString("materialName"));
155
156                     XWPFRun planRunLabel2 = planP.createRun();
157                     setCommonRunStyle(planRunLabel2,20,16,false,false,"666666",1);
158                     planRunLabel2.setText(",种植时间");
159
160                     String planStartTimeStr = sdf.format(new Date(plan.getTimestamp("planStartTime").getTime()));
161                     XWPFRun planStartTimeRun = planP.createRun();
162                     setCommonRunStyle(planStartTimeRun,20,16,false,true,"666666",1);
163                     planStartTimeRun.setText(planStartTimeStr);
164                     if(planIndex==planList.size()){
165                         wordHeight(4,doc);
166                     }
167                 }
168                 //提示
169                 XWPFParagraph tipP = doc.createParagraph();
170                 tipP.setAlignment(ParagraphAlignment.CENTER);
171                 tipP.setVerticalAlignment(TextAlignment.TOP);
172                 XWPFRun tipPRun = tipP.createRun();
173                 setCommonRunStyle(tipPRun,120,14,false,false,"666666",1);
174                 tipPRun.setText("请务必按照通知下达的计划种植,否则公司不负责收购。");
175                 //农户
176                 XWPFParagraph farmerSignP = doc.createParagraph();
177                 XWPFRun farmerSignPRun = farmerSignP.createRun();
178                 setCommonRunStyle(farmerSignPRun,30,16,false,false,"666666",1);
179                 farmerSignPRun.setText("农户:");
180                 //技术员
181                 XWPFParagraph technicianP = doc.createParagraph();
182                 XWPFRun technicianPRun = technicianP.createRun();
183                 setCommonRunStyle(technicianPRun,30,16,false,false,"666666",1);
184                 technicianPRun.setText("技术员:");
185                 //负责人
186                 XWPFParagraph chargerP = doc.createParagraph();
187                 XWPFRun chargerPRun = chargerP.createRun();
188                 setCommonRunStyle(chargerPRun,30,16,false,false,"666666",1);
189                 chargerPRun.setText("负责人:");
190                 //通知送达时间
191                 XWPFParagraph deliveryTimeP = doc.createParagraph();
192                 XWPFRun deliveryTimePRun = deliveryTimeP.createRun();
193                 setCommonRunStyle(deliveryTimePRun,30,16,false,false,"666666",1);
194                 deliveryTimePRun.setText("通知送达时间:            年        月        日");
195                 //苏星生态农业生产科
196                 XWPFParagraph suxP = doc.createParagraph();
197                 suxP.setAlignment(ParagraphAlignment.RIGHT);
198                 XWPFRun suxPRun = suxP.createRun();
199                 setCommonRunStyle(suxPRun,30,16,false,false,"666666",1);
200                 suxPRun.setText("苏星生态农业生产科");
201             }
202             response.reset();
203             String fileName = "种植计划书.doc";
204             response.setContentType("application/x-msdownloadoctet-stream;charset=utf-8");
205             response.setHeader("Content-Disposition","attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8"));
206             OutputStream out = response.getOutputStream();
207             doc.write(out);
208             out.flush();
209             doc.write(out);
210             out.close();
211         } catch (GenericEntityException e) {
212             // TODO Auto-generated catch block
213             Debug.logError(e, "查询农户种植计划异常" + e.toString(), module);
214             CommonEvents.writeResultToResponse(ServiceUtil.returnError("查询农户种植计划异常"), response);
215             return "error";
216         } catch (IOException e) {
217             // TODO Auto-generated catch block
218             e.printStackTrace();
219         }
220          return "success";
221     }
时间: 2024-12-13 14:24:25

word自定义格式 并下载的相关文章

poi根据模版生成多页word,并压缩下载

前端时间公司有个项目,需求大致是这样的——根据word模版,生成带学生照片的信息表格.如果是批量打印,则生成一个word文档,每个学生占用一页. 在实现时,参考了两位老哥的代码: 使用poi根据模版生成word文档,支持插入数据和图片: poi替换word模板内容 并且合并生成多页的word 实现分页. 先上工具类的代码: import org.apache.poi.xwpf.usermodel.*; import javax.servlet.http.HttpServletResponse;

logback自定义格式转换器

创建自定义格式转换符有两步. 首先,必须继承ClassicConverter类.ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串.例如,LoggerConverter,它是处理“% logger”转换符的转换器,它从ILoggingEvent提取logger 的名字并作为字符串返回. 假设我们的自定义ClassicConverter的功能是按照ANSI终端惯例为记录事件的级别进行着色,下面是一种可能的实现: 示例:样本转换器例子 (src/main

去掉word冗余格式 java正则表达式

word转换html时,会留下很多格式,有些格式并不是我们所需要的,然而这些格式比真正的文章内容还要多,严重影响页面的加载速度,因此就需要找个一个好的解决方案把这些多余的格式个去掉.网上有很多去除word冗余格式的js版的正则表达式,这里只提供java版的正则表达式. 1.public static String clearWordFormat(String content) { 2. //把<P></P>转换成</div></div>保留样式 3. //c

word去格式按钮

用此一刷去格式,可以刷边框,底纹,页眉等. word去格式按钮

自定义格式

2.自定义格式 - [email protected] 中国共产 2.1自定义格式 - [email protected] 中国共产 2.1.1自定义格式 - [email protected] 中国共产 2.1.1.1自定义格式 - [email protected] 中国共产 2.1.1.1.1自定义格式 - [email protected] 中国共产 自定义格式 - [email protected] 中国共产 自定义格式 - [email protected] 中国共产  自定义格式

Excel 单元格自定义格式技巧总结

第一部分 Excel 中的单元格格式是一个最基本但是又很高级的技能,说它基本是因为我们几乎天天都会用到它,会用它来设置一些简单的格式,比如日期,文本等等:高级是因为利用 Excel 单元格的自定义格式我们可以实现一些看起来非常神奇和有用的效果.下面我们就由浅入深的来介绍一下 Excel 单元格自定义格式的知识和技巧. 1."G/通用格式" 以常规的数字显示,相当于"分类"列表中的"常规"选项. 代码:G/通用格式.10 显示为 10:10.1 显

ppt转换pdf格式免费下载

ppt转换pdf格式免费下载从网上下载的课件有不少水印,基于目前网络的实际情况,从付出心血的劳动者的角度看保留水印是可以接受的,不过当水印的位置或大小不恰当的时候,会对阅读造成较大的障碍,这个时候,就需要进行水印去除的工作. 本文为大家介绍去除水印的工具——迅捷ppt转换成pdf转换器,请注意,不是acorbat reader,通过深入了解,此软件去除水印效果不错,有兴趣的的朋友们不妨关注更多信息. 方法:①ppt转为pdf转换器软件程序界面;②勾选需要转换的目标文件格式:ppt转pdf;添加需

WORD自定义宏

自定义快捷键 折叠所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命令—ColllapseAllHeadings 展开所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命令—ExpandAllHeadings 全屏快捷键 Alt+V+U, esc退出 可通过录制宏设定F11全屏 Word自定义宏 Sub 标题1() Selection.Style = ActiveDocument.Styles("标题 1") End Sub Sub 标题2() Selec

SQL语句将DateTime 转成自定义格式

DateTime 转成 Date,Time, select update_date = 2007-01-06 16:14:50.437 CONVERT(VARCHAR(30),update_date,111)   =   2007/01/06 CONVERT(VARCHAR(30),update_date,8) =   16:14:50 语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CON