https://blog.csdn.net/qq_26408545/article/details/110669104

poi 导入,高版本不兼容,建议以下版本:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.4</version>
</dependency>

jdk:1.8

自己的例子:

public void wordExportOut(HttpServletResponse response){int row = 10;int column = 10;//新建一个文档XWPFDocument doc = new XWPFDocument();CTDocument1 document = doc.getDocument();CTBody body = document.getBody();if (!body.isSetSectPr()) {body.addNewSectPr();}CTSectPr section = body.getSectPr();if(!section.isSetPgSz()) {section.addNewPgSz();}CTPageSz pageSize = section.getPgSz();//必须要设置下面两个参数,否则整个的代码是无效的pageSize.setW(BigInteger.valueOf(15840));pageSize.setH(BigInteger.valueOf(12240));pageSize.setOrient(STPageOrientation.LANDSCAPE);//创建一个表格XWPFTable table = doc.createTable(row,column);//测试数据for (int i = 0; i < row; i++) {for (int j = 0; j < column; j++) {table.getRow(i).getCell(j).setText(""+i+":"+j);}}String fileName = "我的.doc";//设置相应头try {try {fileName = URLEncoder.encode(fileName, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}response.setContentType("application/octet-stream;charset=UTF-8");response.setHeader("Content-Disposition", "attachment;filename="+ fileName);//遵守缓存规定response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");} catch (Exception ex) {ex.printStackTrace();}//输出流OutputStream os = null;try {os = response.getOutputStream();doc.write(os);os.flush();os.close();} catch (IOException e) {e.printStackTrace();}}

网络通用下下载横版word 横版excel 表格:

package com.kang.staffinfosystem.util;import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ExportWord {/*** 下载横屏word的excel表格** @param filename:文件名* @param titleStr:标题名* @param description:居中描述:可空* @param value_columns:列明* @param dataList:数据* @param colWidths:列宽度,可空* @param response:HttpServletResponse* @throws IOException*/public static void downWordTransverse(String filename, String titleStr, String description, String[] value_columns, List<List<String>> dataList, Integer[] colWidths,ParagraphAlignment[] excelAlign, HttpServletResponse response) throws IOException {XWPFDocument doc = new XWPFDocument();CTDocument1 document = doc.getDocument();CTBody body = document.getBody();if (!body.isSetSectPr()) {body.addNewSectPr();}CTSectPr section = body.getSectPr();if (!section.isSetPgSz()) {section.addNewPgSz();}//1. 设置页面大小  当前A4大小CTPageSz pageSize = section.getPgSz();//1.1 必须要设置下面两个参数,否则整个的代码是无效的pageSize.setW(BigInteger.valueOf(16840));pageSize.setH(BigInteger.valueOf(11907));pageSize.setOrient(STPageOrientation.LANDSCAPE);//1.2 设置页面为窄边距setDocumentMargin(section,"420","720","420","720");//2. 添加标题XWPFParagraph titleParagraph = doc.createParagraph();//设置段落居中titleParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFRun titleParagraphRun = titleParagraph.createRun();titleParagraphRun.setText(titleStr);titleParagraphRun.setColor("000000");titleParagraphRun.setFontFamily("方正小标宋简体");titleParagraphRun.setFontSize(22);if (!StringUtils.isEmpty(description)) {//3. 添加段落,描述XWPFParagraph dateParagraph = doc.createParagraph();//3.1 设置段落居中dateParagraph.setAlignment(ParagraphAlignment.CENTER);//3.2设置标题居中XWPFRun dateParagraphRun = dateParagraph.createRun();dateParagraphRun.setText(description);dateParagraphRun.setColor("000000");dateParagraphRun.setFontFamily("仿宋");dateParagraphRun.setFontSize(12);}//4.表格//表格内容XWPFTableCell cell;CTTcPr cellPr;CTTblWidth cellw;XWPFTable comTable = doc.createTable();//4.1表格宽度为指定宽度:STTblWidth.DXA 1CTTblPr ctTblPr = comTable.getCTTbl().addNewTblPr();CTTblWidth comTableWidth = ctTblPr.addNewTblW();comTableWidth.setType(STTblWidth.DXA);comTableWidth.setW(BigInteger.valueOf(16000));//4.1.2设置布局为固定不便方式CTTblLayoutType ctTblLayoutType = ctTblPr.isSetTblLayout()?ctTblPr.getTblLayout():ctTblPr.addNewTblLayout();ctTblLayoutType.setType(STTblLayoutType.FIXED);//4.2 表头XWPFTableRow rowHead = comTable.getRow(0);//4.3设置表格首行单元格XWPFParagraph cellParagraph;XWPFRun cellParagraphRun;for (int i = 0; i < value_columns.length; i++) {if(i==0){cell = rowHead.getCell(0);}else{cell = rowHead.addNewTableCell();}cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中//设置单元格宽度cellPr = cell.getCTTc().addNewTcPr();cellw = cellPr.addNewTcW();if(colWidths!=null){cellw.setType(STTblWidth.DXA);cellw.setW(BigInteger.valueOf(colWidths[i]));}//设置单元格内容cellParagraph = cell.getParagraphs().get(0);cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中cellParagraphRun = cellParagraph.createRun();cellParagraphRun.setFontFamily("黑体");cellParagraphRun.setFontSize(12); //设置表头单元格居中cellParagraphRun.setText(value_columns[i]);}int rows = dataList.size();for (int i = 0; i < rows; i++) {XWPFTableRow rowsContent = comTable.createRow();for (int j = 0; j < dataList.get(i).size(); j++) {//设置单元格宽度cell = rowsContent.getCell(j);cellPr = cell.getCTTc().addNewTcPr();cellw = cellPr.addNewTcW();if(colWidths!=null){cellw.setType(STTblWidth.DXA);cellw.setW(BigInteger.valueOf(colWidths[j]));}cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中//设置单元格内容XWPFParagraph cellParagraphC = cell.getParagraphs().get(0);if(excelAlign!=null){cellParagraphC.setAlignment(excelAlign[j]);}else{cellParagraphC.setAlignment(ParagraphAlignment.LEFT);}String textContent = dataList.get(i).get(j);if (textContent.indexOf("\n") == -1) {XWPFRun cellParagraphRunC = cellParagraphC.createRun();cellParagraphRunC.setFontFamily("仿宋");cellParagraphRunC.setFontSize(12); //设置表格内容字号cellParagraphRunC.setText(dataList.get(i).get(j) + ""); //单元格段落加载内容} else {String[] textContentArray = textContent.split("\n");int m = 0;for (String text : textContentArray) {String regex = "^\\*\\*(.*?)\\*\\*";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(text);if(matcher.find()){String contentF = matcher.group().replaceAll("\\*","");XWPFRun cellParagraphRunC = cellParagraphC.createRun();cellParagraphRunC.setFontFamily("仿宋");cellParagraphRunC.setFontSize(12); //设置表格内容字号cellParagraphRunC.setText(contentF);//设置该段内容cellParagraphRunC.setBold(true);//设置加粗//取出剩余的内容text = text.replace(matcher.group(),"");}m++;XWPFRun cellParagraphRunC = cellParagraphC.createRun();cellParagraphRunC.setFontFamily("仿宋");cellParagraphRunC.setFontSize(12); //设置表格内容字号cellParagraphRunC.setText(text);if(m!=textContentArray.length){cellParagraphRunC.addBreak(BreakType.TEXT_WRAPPING);}}}}}response.setContentType("application/force-download");// 设置强制下载不打开response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(filename, "utf-8") + ".docx");// 设置文件名try (OutputStream out = response.getOutputStream();){doc.write(out);} catch (Exception e) {e.printStackTrace();}}/*** 设置页边距 (word中1厘米约等于567)* @param section* @param left* @param top* @param right* @param bottom*/public static void setDocumentMargin(CTSectPr section, String left,String top, String right, String bottom) {if(!section.isSetPgMar()){section.addNewPgMar();}CTPageMar ctpagemar = section.getPgMar();if (!isNull(left)) {ctpagemar.setLeft(new BigInteger(left));}if (!isNull(top)) {ctpagemar.setTop(new BigInteger(top));}if (!isNull(right)) {ctpagemar.setRight(new BigInteger(right));}if (!isNull(bottom)) {ctpagemar.setBottom(new BigInteger(bottom));}}public static boolean isNull(Object obj) {return obj == null;}
}

工具类使用方式

String titleStr = "标题";
String description = "描述";
String[] value_columns = {"列1", "列2", "列3","列4","列5","列6","列7","列8"};
List<List<String>> dataList = new ArrayList<>();//导出的数据
Integer[] colWidths = {600,1700,2200,700,900,1500,7350,1050};//导出的excel宽度excel(扣除边距剩余共16000宽)
ParagraphAlignment[] excelAlign = {ParagraphAlignment.CENTER,ParagraphAlignment.LEFT,ParagraphAlignment.LEFT,ParagraphAlignment.CENTER,ParagraphAlignment.CENTER,ParagraphAlignment.LEFT,ParagraphAlignment.LEFT,ParagraphAlignment.CENTER};//设置水平方向downWordTransverse(titleStr,titleStr,description,value_columns,dataList,colWidths,excelAlign,response);

POi 导出word 表格,设置页面横版相关推荐

  1. poi导出word表格设置自动重调尺寸适应内容固定表格宽度

    表格原本的type属性是autofit(自动调整),如果需要固定表格的宽度,需要关闭自动重调尺寸适应内容,java代码为 CTTblLayoutType type = infoTable.getCTT ...

  2. POI导出word表格 office打开没问题 wps打开列有问题

    POI导出word表格 office打开没问题 wps打开列有问题 模板样式 导出文档office打开 wps打开文件 1.给表格设置宽,指定宽度 2.将布局固定 3.动态设置单元格的宽度 4.重点设 ...

  3. POI 导出 Word 表格

    项目需求,需要将页面上的报表导出Word文档. 一.报表如下: 二.主要实现代码 1.导出Util类 package com.yhksxt.util;import java.io.IOExceptio ...

  4. poi导出word表格、图片、多段等处理

    全文介绍 poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档 . 常用标签介绍(官网): 1文本:{{var}} 2. 图片:{ ...

  5. poi 导出 word 表格样式

    XWPFDocument document = new XWPFDocument(); // 基本信息表格 XWPFTable infoTable = document.createTable(); ...

  6. poi导出word 表格 单元格内换行

    List<XWPFTableCell> tableCellsq9 = table.getRow(8).getTableCells();    tableCellsq9.get(0).set ...

  7. poi设置word表格单元格宽度_poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.expo ...

  8. poi导出word时内嵌表格场景,即开即用

    poi导出word内嵌表格 设计分析部分 后端代码部分 xml文件配置 实体类 controller层 使用到的工具类 service层 前端代码部分 测试页面 设计分析部分 首先要对导出word的需 ...

  9. poi导出word文件(带表格)

    poi导出word文件(带表格) 一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印. 二.POM <dependency><groupId> ...

最新文章

  1. Android美工坊:Selector选择器的使用
  2. git常见问题解决办法
  3. DIV常用属性大全自己整理
  4. mysql 会话级别的参数_PostgreSQL的参数设置级别及查询各级别的参数值
  5. Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
  6. MaxScale中间件部署数据库读写分离
  7. mysql中不能update与safe update mode 有关
  8. 看图说话:11种用户,你如何应对?
  9. 目标检测(九)--YOLO v1,v2,v3
  10. linux svn服务的维护,Linux服务器搭建svn环境方法详解_网站服务器运行维护,Linux,svn...
  11. 细思极恐:如果我是股东,我也不会再出钱
  12. HIT计算机系统大作业——hello的一生
  13. JavaWeb报错500 类错误 解决方法
  14. 20170216.双目摄像机标定参数说明
  15. 非门芯片 74AHC1G08 74AHC1G04 74AHC1G02的区别
  16. 关于轻量级知识共享平台mm-wiki的使用
  17. paradigm画时序图 visual_Visual Paradigm使用技巧:从用户故事中生成序列图
  18. C++:C++11的牛逼特性
  19. 第十四周 项目1 - 验证算法
  20. Unity 模型导入材质丢失解决方案

热门文章

  1. 苏姿丰博士专访:突破CPU与GPU极限,AMD正火力全开
  2. linux文件管理知识点总结,Linux基本知识点总结——磁盘配额
  3. 小程序自定义swiper的指示点样式及颜色
  4. String字符串转化为数组遍历出来
  5. Vue学习教程1--Vue核心
  6. n行Python代码系列:两行代码去除抖音快手短视频尾部Logo
  7. initramfs两种方法恢复_WIN10系统恢复出厂设置
  8. 这回轮到阿里云了。。
  9. make 、 make all 、 make clean 、 make install 区别【转】
  10. 打包html js为一个文件,在vue-cli中如何将所有js以及css打包成一个js文件