java将后台数据库查询到的数据导出word文档当中

之前项目需求使用Java导出word文档,一直没有进行整理,今天把它进行整理出来,以便以后使用到;下面是导出的word文档。

// 前端报告表格
<div id="divId_emerReport"><table class="table-report"><caption>应急处置报告</caption><tr><td style="width: 100px; height: 40px;"><span class="span-title">报警地点</span></td><td style="width: 200px; height: 40px;"><span id="alarmAreaName" class="span-content"></span></td><td style="width: 100px; height: 40px;"><span class="span-title">报警时间</span></td><td style="width: 200px; height: 40px;"><span id="alarmTime" class="span-content"></span></td></tr><tr><td style="width: 100px; height: 40px;"><span class="span-title">接警人</span></td><td style="width: 200px; height: 40px;"><span id="receiveAlarmPolice" class="span-content"></span></td><td style="width: 100px; height: 40px;"><span class="span-title">接警时间</span></td><td style="width: 200px; height: 40px;"><span id="receiveAlarmTime" class="span-content"></span></td></tr><tr><td style="width: 100px; height: 40px;"><span class="span-title">预案名称</span></td><td style="width: 200px; height: 40px;"><span id="preplanName" class="span-content">${emerHandleRecord.preplanName}</span></td><td style="width: 100px; height: 40px;"><span class="span-title">启动时间</span></td><td style="width: 200px; height: 40px;"><span id="preplanStartTime" class="span-content"><fmt:formatDate value="${emerHandleRecord.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/></span></td></tr><c:forEach var="handleStep" items="${emerHandleRecord.handleStepList}" varStatus="status1"><tr><td class="bgcolor-red" style="height: 40px;" colspan="4"><span id="stepName" class="span-title">${handleStep.stepName}</span></td></tr><c:forEach var="handleGroup" items="${handleStep.handleGroupList}" varStatus="status2"><tr><td><span id="groupName" class="span-title">${handleGroup.groupName}</span></td><td colspan="3" style="height: 40px;"><table class="table-report-nest"><c:forEach var="handleMember" items="${handleGroup.handleMemberList}" varStatus="status3"><tr style="height: 40px;"><td style="width: 200px;"><span id="memberName" class="span-content">${handleMember.memberName}</span></td><td style="width: 100px;"><span id="callNo" class="span-content">${handleMember.callNo}</span></td><td style="width: 200px;"><span id="callResult" class="span-content">${handleMember.callResult}</span></td></tr></c:forEach></table></td></tr></c:forEach><tr><td height="100"><span class="span-title">过程记录</span></td><td colspan="3"><span id="handleContent" class="span-content">${handleStep.handleContent}</span></td></tr></c:forEach><tr><td height="120"><span class="span-title">经验总结</span></td><td colspan="3"><span id="experience" class="span-content">${emerHandleRecord.experience}</span></td></tr></table><div style="height: 20px;"></div>
</div>
// js代码
/*** 导出报告*/function exportReportDocument() {var selarrrow = $("#gridId_yjjl").grid("option", "selarrrow");window.location.href ="${ctx}/yjct/yjjl/exprotWord?recordId=" +selarrrow[0];}
// controller控制层代码/*** 预案报告导出word文档* @param recordId* @param request* @param response* @return* @throws IOException* @throws Exception*/@RequestMapping(value = "exprotWord")@ResponseBodypublic void exprotWord(String recordId ,HttpServletRequest request,HttpServletResponse response)throws IOException , Exception {Map<String, Object> resultMap=new HashMap<>();try {System.out.println("recordId:"+recordId);Map<String, Object> map = yjjlService.queryYjyaReport(recordId);YjyabgEntity yjyabgEntity = (YjyabgEntity) map.get("YjyabgEntity");//设置相应到客户端的文件名编码response.setCharacterEncoding("UTF-8");//定义下载的文件名字String fileName = "预案报告文档.docx";response.setContentType("application/msword;charset=UTF-8");response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");//获取响应报文输出流对象ServletOutputStream out = response.getOutputStream();ExprotSTUtil exprotWord = new ExprotSTUtil();XWPFDocument document = exprotWord.exportSTToWord(yjyabgEntity);//String s = UUID.randomUUID().toString().replace("-","");//Write the Document in file system//out = new FileOutputStream(new File("D:\\预案报告文档"+s+".docx"));document.write(out);document.close();out.close();}catch (Exception e){e.printStackTrace();}}
}
// 工具类package com.cesgroup.prison.yjct.util;import com.cesgroup.prison.alarm.record.entity.AlarmRecordEntity;
import com.cesgroup.prison.emergency.handle.record.entity.EmerHandleRecord;
import com.cesgroup.prison.emergency.handle.recordGroup.entity.EmerHandleRecordGroup;
import com.cesgroup.prison.emergency.handle.recordMember.entity.EmerHandleRecordMember;
import com.cesgroup.prison.emergency.handle.recordStep.entity.EmerHandleRecordStep;
import com.cesgroup.prison.yjct.entity.GzzcyEntity;
import com.cesgroup.prison.yjct.entity.YjyabgEntity;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.List;/*** @author 陈才岛* @create 2019-08-15 15:00*/
public class ExprotSTUtil {public  XWPFDocument exportSTToWord(YjyabgEntity yjyabgEntity) throws IOException{//创建document对象XWPFDocument document = new XWPFDocument();//添加标题XWPFParagraph titleParagraph = document.createParagraph();//设置段落居中titleParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFRun titleParagraphRun = titleParagraph.createRun();titleParagraphRun.setText("预案报告");titleParagraphRun.setColor("000000");titleParagraphRun.setBold(true);  //设置加粗titleParagraphRun.setFontSize(20);List<List<GzzcyEntity>> workgroup = yjyabgEntity.getWorkgroup();//动态生成表格的行数int x=0;int m=yjyabgEntity.getWorkgroup().size();for(int i=0;i<workgroup.size();i++){List<GzzcyEntity> gzzcyEntities = workgroup.get(i);if(gzzcyEntities.size()==0){m--;}int size = gzzcyEntities.size();x+=size;}//创建表格int row = m+x+6;System.out.println("表格的行数:"+row);//int column = 4;XWPFTable table = document.createTable();//列宽自动CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();infoTableWidth.setType(STTblWidth.DXA);infoTableWidth.setW(BigInteger.valueOf(9072));//创建一个段落XWPFParagraph p = document.createParagraph();//第一行XWPFTableRow row1 = table.getRow(0);XWPFTableCell cell1 = row1.getCell(0);XWPFTableCell cell2 = row1.addNewTableCell();XWPFTableCell cell3 = row1.addNewTableCell();XWPFTableCell cell4 = row1.addNewTableCell();//跨列合并  合并第一行 第1列到第4列mergeCellsHorizontal(table,0,0,3);p = cell1.addParagraph();XWPFRun cell1Run= p.createRun();cell1Run.setText("基本信息:");cell1Run.setFontSize(12);cell1Run.setBold(true);cell1Run.setColor("000000");//表格第二行XWPFTableRow row2 = table.createRow();XWPFTableCell row2Cell1 = row2.getCell(0);XWPFTableCell row2Cell2 = row2.getCell(1);XWPFTableCell row2Cell3 = row2.getCell(2);XWPFTableCell row2Cell4 = row2.getCell(3);XWPFRun row2Run1 = row2Cell1.addParagraph().createRun();row2Run1.setText("报警地点:");row2Run1.setFontSize(12);row2Run1.setColor("000000");XWPFRun row2Run2 = row2Cell2.addParagraph().createRun();row2Run2.setText(yjyabgEntity.getAlertArea());XWPFRun row2Run3 = row2Cell3.addParagraph().createRun();row2Run3.setText("报警时间:");row2Run3.setFontSize(12);row2Run3.setColor("000000");XWPFRun row2Run4 = row2Cell4.addParagraph().createRun();row2Run4.setText(yjyabgEntity.getAlertTime());//表格第三行XWPFTableRow row3 = table.createRow();XWPFTableCell row3cell1 = row3.getCell(0);XWPFTableCell row3cell2 = row3.getCell(1);XWPFTableCell row3cell3 = row3.getCell(2);XWPFTableCell row3cell4 = row3.getCell(3);XWPFRun row3cell1Run = row3cell1.addParagraph().createRun();row3cell1Run.setText("预案详情:");row3cell1Run.setFontSize(12);row3cell1Run.setBold(true);row3cell1Run.setColor("000000");//跨列合并  合并第三行 第1列到第4列mergeCellsHorizontal(table,2,0,3);//表格第四行XWPFTableRow row4 = table.createRow();XWPFTableCell row4Cell1 = row4.getCell(0);XWPFTableCell row4Cell2 = row4.getCell(1);XWPFTableCell row4Cell3 = row4.getCell(2);XWPFTableCell row4Cell4 = row4.getCell(3);XWPFRun row4Cell1Run = row4Cell1.addParagraph().createRun();row4Cell1Run.setText("预案名称:");row4Cell1Run.setFontSize(12);row4Cell1Run.setColor("000000");XWPFRun row4Cell2Run = row4Cell2.addParagraph().createRun();row4Cell2Run.setText(yjyabgEntity.getPlanName());XWPFRun row4Cell3Run = row4Cell3.addParagraph().createRun();row4Cell3Run.setText("启动时间:");row4Cell3Run.setFontSize(12);row4Cell3Run.setColor("000000");XWPFRun row4Cell4Run = row4Cell4.addParagraph().createRun();row4Cell4Run.setText(yjyabgEntity.getCreateTime());//表格第五行XWPFTableRow row5 = table.createRow();XWPFTableCell row5Cell1 = row5.getCell(0);XWPFTableCell row5Cell2 = row5.getCell(1);XWPFTableCell row5Cell3 = row5.getCell(2);XWPFTableCell row5Cell4 = row5.getCell(3);XWPFRun row5Cell1run = row5Cell1.addParagraph().createRun();row5Cell1run.setText("接警人:");row5Cell1run.setFontSize(12);row5Cell1run.setColor("000000");XWPFRun row5Cell2run = row5Cell2.addParagraph().createRun();row5Cell2run.setText(yjyabgEntity.getReceiveAlarmPolice());XWPFRun row5Cell3run = row5Cell3.addParagraph().createRun();row5Cell3run.setText("接警时间:");row5Cell3run.setFontSize(12);row5Cell3run.setColor("000000");XWPFRun row5Cell4run = row5Cell4.addParagraph().createRun();row5Cell4run.setText(yjyabgEntity.getReceiveTime());//动态生成行int count=0;int n=0;for(int i=0;i<workgroup.size();i++){List<GzzcyEntity> gzzcyEntities = workgroup.get(i);if(gzzcyEntities.size()>0){XWPFTableRow gzz = table.createRow();XWPFTableCell RowiCell1 = gzz.getCell(0);XWPFTableCell RowiCell2 = gzz.getCell(1);XWPFTableCell RowiCell3 = gzz.getCell(2);XWPFTableCell RowiCell4 = gzz.getCell(3);XWPFRun RowiCell1run1 = RowiCell1.addParagraph().createRun();RowiCell1run1.setText("工作组"+(i+1)+":");RowiCell1run1.setFontSize(12);RowiCell1run1.setBold(true);RowiCell1run1.setColor("000000");n++;int size = gzzcyEntities.size();if(n==1){ //第一次进入//跨列合并  合并第6行 第2列到第4列mergeCellsHorizontal(table,5,1,3);count+=size;}if(n>1){//第二次进入//跨列合并  合并第6行 第2列到第4列mergeCellsHorizontal(table,5+count+1,1,3);count=count+size+1;}for(int j=0;j<size;j++){XWPFTableRow gzzcy = table.createRow();XWPFTableCell RowjCell1 = gzzcy.getCell(0);XWPFTableCell RowjCell2 = gzzcy.getCell(1);XWPFTableCell RowjCell3 = gzzcy.getCell(2);XWPFTableCell RowjCell4 = gzzcy.getCell(3);XWPFRun RowjCell1run = RowjCell1.addParagraph().createRun();RowjCell1run.setText("姓名:");RowjCell1run.setFontSize(12);RowjCell1run.setColor("000000");XWPFRun RowjCell2run = RowjCell2.addParagraph().createRun();RowjCell2run.setText(gzzcyEntities.get(j).getWgmPoliceName());XWPFRun RowjCell3run = RowjCell3.addParagraph().createRun();RowjCell3run.setText("联系方式:");RowjCell3run.setFontSize(12);RowjCell3run.setColor("000000");XWPFRun RowjCell4run = RowjCell4.addParagraph().createRun();RowjCell4run.setText(gzzcyEntities.get(j).getPbdPhone());}}}//最后一行XWPFTableRow lastRow = table.createRow();XWPFTableCell lastRowcell1 = lastRow.getCell(0);XWPFTableCell lastRowcell2 = lastRow.getCell(1);XWPFTableCell lastRowcell3 = lastRow.getCell(2);XWPFTableCell lastRowcell4 = lastRow.getCell(3);XWPFRun lastRowcell1run = lastRowcell1.addParagraph().createRun();lastRowcell1run.setText("过程记录:");lastRowcell1run.setBold(true);lastRowcell1run.setFontSize(12);lastRowcell1run.setColor("000000");XWPFRun lastRowcell2run = lastRowcell2.addParagraph().createRun();lastRowcell2run.setText(yjyabgEntity.getProcessRecord());//跨列合并  合并最后一行 第2列到第4列int a=row-1;mergeCellsHorizontal(table,a,1,3);CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);//添加页眉CTP ctpHeader = CTP.Factory.newInstance();CTR ctrHeader = ctpHeader.addNewR();CTText ctHeader = ctrHeader.addNewT();XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);//设置为右对齐headerParagraph.setAlignment(ParagraphAlignment.RIGHT);XWPFParagraph[] parsHeader = new XWPFParagraph[1];parsHeader[0] = headerParagraph;policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);//添加页脚CTP ctpFooter = CTP.Factory.newInstance();CTR ctrFooter = ctpFooter.addNewR();CTText ctFooter = ctrFooter.addNewT();XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document);headerParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFParagraph[] parsFooter = new XWPFParagraph[1];parsFooter[0] = footerParagraph;policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);FileOutputStream out=null;return document;}/****  合并行* @param table* @param col  所合并的列(哪一列需要合并行)* @param fromRow 起始行* @param toRow   终止行*/private void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {XWPFTableCell cell = table.getRow(rowIndex).getCell(col);if ( rowIndex == fromRow ) {// The first merged cell is set with RESTART merge valuecell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);} else {// Cells which join (merge) the first one, are set with CONTINUEcell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);}}}/**** 合并列* @param table* @param row 所合并的行(哪一行需要合并列)* @param fromCell  起始列* @param toCell   终止列*/private  void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) {for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {XWPFTableCell cell = table.getRow(row).getCell(cellIndex);if ( cellIndex == fromCell ) {// The first merged cell is set with RESTART merge valuecell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);} else {// Cells which join (merge) the first one, are set with CONTINUEcell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);}}}/**** 导出word 设置行宽* @param table* @param width*/private  void setTableWidth(XWPFTable table,String width){CTTbl ttbl = table.getCTTbl();CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();CTJc cTJc=tblPr.addNewJc();cTJc.setVal(STJc.Enum.forString("center"));tblWidth.setW(new BigInteger(width));tblWidth.setType(STTblWidth.DXA);}/*** liyanzhe** */public  XWPFDocument exportSTToWord1(EmerHandleRecord emerHandleRecord, AlarmRecordEntity alarmRecordEntity) throws IOException{List<EmerHandleRecordStep> emerHandleRecordSteps = emerHandleRecord.getHandleStepList();//动态生成表格的行数int x=0;//有多少人收到的行数int m=emerHandleRecord.getHandleStepList().size()*2;//有几步和过程记录的行数for (EmerHandleRecordStep emerHandleRecordStep : emerHandleRecordSteps) {List<EmerHandleRecordGroup> emerHandleRecordGroups = emerHandleRecordStep.getHandleGroupList();if (emerHandleRecordGroups!=null) {for (EmerHandleRecordGroup emerHandleRecordGroup : emerHandleRecordGroups) {if(emerHandleRecordGroup.getHandleMemberList()!=null){x+= emerHandleRecordGroup.getHandleMemberList().size();}else{x++;}}}else{x++;}}//表格总行数int row = m+x+4;System.out.println("表格的行数:"+row);//date转stringString pattern2 = "yyyy-MM-dd HH:mm:ss";SimpleDateFormat sdf2 = new SimpleDateFormat(pattern2);//创建document对象XWPFDocument document = new XWPFDocument();//添加标题XWPFParagraph titleParagraph = document.createParagraph();//设置段落居中titleParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFRun titleParagraphRun = titleParagraph.createRun();titleParagraphRun.setText("应急处置报告");titleParagraphRun.setColor("000000");titleParagraphRun.setBold(true);  //设置加粗titleParagraphRun.setFontSize(20);// 创建表格XWPFTable table = document.createTable(row, 4);//列宽自动CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();infoTableWidth.setType(STTblWidth.DXA);infoTableWidth.setW(BigInteger.valueOf(9072));//表格样式tableBorderStyle(table);// 第一行List<XWPFTableCell> tableCells1 = table.getRow(0).getTableCells();tableTextStyle(tableCells1,0,"报警地点",true,false);tableTextStyle(tableCells1,1,emerHandleRecord.getAlarmAreaName(),false,false);tableTextStyle(tableCells1,2,"报警时间",true,false);tableTextStyle(tableCells1,3,sdf2.format(alarmRecordEntity.getArdAlertTime()),false,false);// 第二行List<XWPFTableCell> tableCells2 = table.getRow(1).getTableCells();tableTextStyle(tableCells2,0,"接警人",true,false);tableTextStyle(tableCells2,1,alarmRecordEntity.getArdReceiveAlarmPolice(),false,false);tableTextStyle(tableCells2,2,"接警时间",true,false);tableTextStyle(tableCells2,3,sdf2.format(alarmRecordEntity.getArdReceiveTime()),false,false);//alarmRecordEntity.getArdReceiveTime()这个里面没值,bug// 第三行List<XWPFTableCell> tableCells3 = table.getRow(2).getTableCells();tableTextStyle(tableCells3,0,"预案名称",true,false);tableTextStyle(tableCells3,1,emerHandleRecord.getPreplanName(),false,false);tableTextStyle(tableCells3,2,"启动时间",true,false);tableTextStyle(tableCells3,3,sdf2.format(emerHandleRecord.getStartTime()),false,false);int num = 0;//计算行数int firstnum = 0;//小队名称开始行for(int i=0;i<emerHandleRecordSteps.size();i++){EmerHandleRecordStep emerHandleRecordStep = emerHandleRecordSteps.get(i);//第几步那行的合并mergeCellsHorizontal(table,3+num,0,3);String stepName = emerHandleRecordStep.getStepName();//第几步//第几步那行赋值List<XWPFTableCell> tableCellsi = table.getRow(3+num).getTableCells();tableTextStyle(tableCellsi,0,stepName,true,true);String handleContent = emerHandleRecordStep.getHandleContent();//过程记录List<EmerHandleRecordGroup> emerHandleRecordGroups = emerHandleRecordStep.getHandleGroupList();if (emerHandleRecordGroups!=null) {for (EmerHandleRecordGroup emerHandleRecordGroup : emerHandleRecordGroups) {String groupName = emerHandleRecordGroup.getGroupName();//小队名称if(emerHandleRecordGroup.getHandleMemberList()!=null){List<EmerHandleRecordMember> emerHandleRecordMembers= emerHandleRecordGroup.getHandleMemberList();for(int l=0;l< emerHandleRecordMembers.size();l++){EmerHandleRecordMember emerHandleRecordMember = emerHandleRecordMembers.get(l);String meberName =  emerHandleRecordMember.getMemberName();//方式那列名称String callNo = emerHandleRecordMember.getCallNo();//呼叫号String callresult = emerHandleRecordMember.getCallResult();//呼叫内容已发送List<XWPFTableCell> tableCellsy = table.getRow(4+num).getTableCells();if(l==0){//第一次进入,给小队名称赋值tableTextStyle(tableCellsy,0,groupName,true,false);//在有多个成员的时候给小队名称赋一个值//记录第一次的行数,为多个成员时,合并小队名称有初始行firstnum = 4+num;}//方式,呼叫号,呼叫内容已发送tableTextStyle(tableCellsy,1,meberName,false,false);tableTextStyle(tableCellsy,2,callNo,false,false);tableTextStyle(tableCellsy,3,callresult,false,false);if(l==emerHandleRecordMembers.size()-1){//多个成员时,合并小队名称mergeCellsVertically(table, 0, firstnum, 4+num);}num++;}//过程记录List<XWPFTableCell> tableCellsz = table.getRow(4+num).getTableCells();tableTextStyle(tableCellsz,0,"过程记录",true,false);mergeCellsHorizontal(table,4+num,1,3);tableTextStyle(tableCellsz,1,handleContent,false,false);}else{//没有成员的时候,显示的小队名称List<XWPFTableCell> tableCellsy = table.getRow(4+num).getTableCells();tableTextStyle(tableCellsy,0,groupName,true,false);//过程记录List<XWPFTableCell> tableCellsz = table.getRow(5+num).getTableCells();tableTextStyle(tableCellsz,0,"过程记录",true,false);mergeCellsHorizontal(table,5+num,1,3);tableTextStyle(tableCellsz,1,handleContent,false,false);num++;}num++;}}else{num++;}num++;}//最后一行String experience = emerHandleRecord.getExperience();//经验总结List<XWPFTableCell> tableCellsl = table.getRow(row-1).getTableCells();tableTextStyle(tableCellsl,0,"经验总结",true,false);mergeCellsHorizontal(table,row-1,1,3);tableTextStyle(tableCellsl,1,experience,false,false);return document;}private static void tableBorderStyle(XWPFTable table){//表格属性CTTblPr tablePr = table.getCTTbl().addNewTblPr();//表格宽度CTTblWidth width = tablePr.addNewTblW();width.setW(BigInteger.valueOf(8000));//表格颜色CTTblBorders borders=table.getCTTbl().getTblPr().addNewTblBorders();//表格内部横向表格颜色CTBorder hBorder=borders.addNewInsideH();hBorder.setVal(STBorder.Enum.forString("single"));hBorder.setSz(new BigInteger("1"));hBorder.setColor("dddddd");//表格内部纵向表格颜色CTBorder vBorder=borders.addNewInsideV();vBorder.setVal(STBorder.Enum.forString("single"));vBorder.setSz(new BigInteger("1"));vBorder.setColor("dddddd");//表格最左边一条线的样式CTBorder lBorder=borders.addNewLeft();lBorder.setVal(STBorder.Enum.forString("single"));lBorder.setSz(new BigInteger("1"));lBorder.setColor("dddddd");//表格最左边一条线的样式CTBorder rBorder=borders.addNewRight();rBorder.setVal(STBorder.Enum.forString("single"));rBorder.setSz(new BigInteger("1"));rBorder.setColor("dddddd");//表格最上边一条线(顶部)的样式CTBorder tBorder=borders.addNewTop();tBorder.setVal(STBorder.Enum.forString("single"));tBorder.setSz(new BigInteger("1"));tBorder.setColor("dddddd");//表格最下边一条线(底部)的样式CTBorder bBorder=borders.addNewBottom();bBorder.setVal(STBorder.Enum.forString("single"));bBorder.setSz(new BigInteger("1"));bBorder.setColor("dddddd");}private static void tableTextStyle(List<XWPFTableCell> tableCells1,int index,String text,boolean bold,boolean bjColor){tableTextStyle(tableCells1.get(index),text,bold,bjColor);}private static void tableTextStyle(XWPFTableCell tableCell,String text,boolean bold,boolean bjColor){if(bjColor){tableCell.setColor("DBDBDB");//设置表格背景颜色}tableCell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中XWPFParagraph p0 = tableCell.addParagraph();tableCell.setParagraph(p0);XWPFRun r0 = p0.createRun();// 设置字体是否加粗r0.setBold(bold);r0.setFontSize(8);// 设置使用何种字体r0.setFontFamily("微软雅黑");// 设置上下两行之间的间距//r0.setTextPosition(8);r0.setColor("333333");r0.setText(text);}
}

java将后台数据库查询到的数据导出word文档当中相关推荐

  1. java ftl 模板 输出list_java freemarker .ftl模板导出word文档(含文字,List, 图片)

    此处只介绍word模板部分,java代码等请自行百度,都一样. 辅助工具:notepad++,百度在线xml格式化 A.不含遍历的简单处理 不含遍历的简单处理 简单的一个key一个值使用比较简单,主要 ...

  2. JAVA 数据导出Word文档模板的功能实现

    对于这个功能,想必也有其他平台会需要吧.比如51job导出文档形式的简历这样.我在这里讲的是用java代码能满足我们实现这一功能的好用的一些方法.废话不多说了. 这种导出word,用XML的方式实现, ...

  3. java poi doc转docx_POI动态插入数据到Word文档

    模板制作 制作word模版,${xxxx}是要替换的内容.注意${xxxx}是一个整体,中间不能断开,因为利用POI的API程序操作时,判断是否有这个${xxxx}才进行替换. 依赖的包 org.ap ...

  4. java导出word表格_使用PowerDesigner16.5 逆向数据库 导出word文档

    在上一篇<使用PowerDesigner16.5 逆向数据库生产表结构或导出word文档二>中,我们学会了使用PowerDesigner16.5怎么连接数据库,逆向生成表结构.有时候,我们 ...

  5. Springboot 项目导出word文档(文档内容包括数据以及服务器图片)

    Springboot 项目freemarker导出word文档(文档内容包括数据以及服务器图片) 前些天有需求要完成导出word文档功能,基础数据导出word文档,网上也能搜到很多源代码,但是我这边要 ...

  6. JAVA毕业设计公交线路查询系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计公交线路查询系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计公交线路查询系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. 关于用java编写生成word文档,动态添加数据到word文档的一些心得

    关于用java编写生成word文档,动态添加数据到word文档的一些心得,经过翻阅了无数的有用的和无用的资料以后,总算找到了一种靠谱的方法 1.概述 经过反反复复的查阅资料,总算找到了一个靠谱的生成w ...

  8. 基于JAVA超市后台系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA超市后台系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA超市后台系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...

  9. Java+freemarker 导出Word文档的实现(包括word for Mac 插入域的方法)-静态数据,动态表格list

    1. 准备环境 1.1 word版本:MacOS系统下的Office360 word for Mac下好多操作和win的不一样啊啊啊,差点栽在Mac word的模版设计上. win版本的word模版设 ...

最新文章

  1. leetcode-回文数(简单)
  2. Java 内存泄漏排查,新技能+1
  3. SQL点滴5—产生时间demention,主要是时间转换
  4. 网易云音乐IPO现场:丁石石石石石石石石石敲钟
  5. shell中变量的取值与赋值
  6. 个人作业——week3
  7. c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...
  8. ThreadPoolExecutor线程池 + Queue队列
  9. Java基础软件的安装及配置及Javascript的运行
  10. Eclipse 下如何引用另一个项目的资源文件
  11. MATLAB最新官方中文文档
  12. FireMonkey v1.1的WinSoft WinRT-10.3-SEO-狼术
  13. 三星时差定位算法 matlab,三星时差定位,tri-satellites geo-location using TDOA,音标,读音,翻译,英文例句,英语词典...
  14. 翻译 Duckietown an Open, Inexpensive and Flexible Platform for Autonomy Education and Research
  15. R语言使用psych包进行主成分分析PCA和探索性因子分析EFA的常用函数介绍:principal、fa、fa.parallel、factor.plot、fa.diagram、scree
  16. 微信小程序大全之100荐:301~400
  17. This application’s application-identifier entitlement does not match that of the installed applicati
  18. 【无线网络技术专题(十)】企业无线网络规划设计与交付流程
  19. 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解
  20. 地下城与勇士(DNF)天空之城副本(龙人之塔、人偶玄关、石巨人塔、黑暗玄廊、悬空城、城主宫殿)(童年的回忆)

热门文章

  1. (裴蜀定理)ax + by = m 有解,当且仅当 m 是 gcd(a,b) 的倍数
  2. 真实的任正非:告诉你一个真实的华为
  3. NFS共享服务搭建详细流程
  4. 括号匹配算法问题 JS
  5. Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市,天气数据可以获得多天天数据)
  6. 设计模式——策略模式(多种促销优惠方案优化)
  7. 魔兽世界官方小说android,魔兽世界官方小说(套装共6册)
  8. 利用粤嵌LinuxGEC6818开发板实现电子相册
  9. 第七课:每年白捡几百块,你要不要
  10. 还用户一片净土:广告自动拦截功能明年登陆Chrome