poi导出word表格跨行
DataCommon.java
package com.ksource.pwlp.model.statistic;
public class DataCommon {
private Long id;
private String name;
private String otherName;
private String dataName;
private String otherDataName;
private int value;
private float otherValue;
private double othersValue;
private String dataValue;
private Long otherDataValue;
private int oneResult;
private int twoResult;
private int threeResult;
private int fourResult;
private int fiveResult;
private int sixResult;
private float oneValue;
private float twoValue;
private float threeValue;
private float fourValue;
private float fiveValue;
private float sixValue;
private double oneVal;
private double twoVal;
private double threeVal;
private double fourVal;
private double fiveVal;
private double sixVal;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOtherName() {
return otherName;
}
public void setOtherName(String otherName) {
this.otherName = otherName;
}
public String getDataName() {
return dataName;
}
public void setDataName(String dataName) {
this.dataName = dataName;
}
public String getOtherDataName() {
return otherDataName;
}
public void setOtherDataName(String otherDataName) {
this.otherDataName = otherDataName;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public float getOtherValue() {
return otherValue;
}
public void setOtherValue(float otherValue) {
this.otherValue = otherValue;
}
public double getOthersValue() {
return othersValue;
}
public void setOthersValue(double othersValue) {
this.othersValue = othersValue;
}
public String getDataValue() {
return dataValue;
}
public void setDataValue(String dataValue) {
this.dataValue = dataValue;
}
public Long getOtherDataValue() {
return otherDataValue;
}
public void setOtherDataValue(Long otherDataValue) {
this.otherDataValue = otherDataValue;
}
public int getOneResult() {
return oneResult;
}
public void setOneResult(int oneResult) {
this.oneResult = oneResult;
}
public int getTwoResult() {
return twoResult;
}
public void setTwoResult(int twoResult) {
this.twoResult = twoResult;
}
public int getThreeResult() {
return threeResult;
}
public void setThreeResult(int threeResult) {
this.threeResult = threeResult;
}
public int getFourResult() {
return fourResult;
}
public void setFourResult(int fourResult) {
this.fourResult = fourResult;
}
public int getFiveResult() {
return fiveResult;
}
public void setFiveResult(int fiveResult) {
this.fiveResult = fiveResult;
}
public int getSixResult() {
return sixResult;
}
public void setSixResult(int sixResult) {
this.sixResult = sixResult;
}
public float getOneValue() {
return oneValue;
}
public void setOneValue(float oneValue) {
this.oneValue = oneValue;
}
public float getTwoValue() {
return twoValue;
}
public void setTwoValue(float twoValue) {
this.twoValue = twoValue;
}
public float getThreeValue() {
return threeValue;
}
public void setThreeValue(float threeValue) {
this.threeValue = threeValue;
}
public float getFourValue() {
return fourValue;
}
public void setFourValue(float fourValue) {
this.fourValue = fourValue;
}
public float getFiveValue() {
return fiveValue;
}
public void setFiveValue(float fiveValue) {
this.fiveValue = fiveValue;
}
public float getSixValue() {
return sixValue;
}
public void setSixValue(float sixValue) {
this.sixValue = sixValue;
}
public double getOneVal() {
return oneVal;
}
public void setOneVal(double oneVal) {
this.oneVal = oneVal;
}
public double getTwoVal() {
return twoVal;
}
public void setTwoVal(double twoVal) {
this.twoVal = twoVal;
}
public double getThreeVal() {
return threeVal;
}
public void setThreeVal(double threeVal) {
this.threeVal = threeVal;
}
public double getFourVal() {
return fourVal;
}
public void setFourVal(double fourVal) {
this.fourVal = fourVal;
}
public double getFiveVal() {
return fiveVal;
}
public void setFiveVal(double fiveVal) {
this.fiveVal = fiveVal;
}
public double getSixVal() {
return sixVal;
}
public void setSixVal(double sixVal) {
this.sixVal = sixVal;
}
}
调用导出word表格代码如下:
List<DataCommon> dataCommonList = new ArrayList<DataCommon>(); //数据是从数据库查出来取需要字段的值存入DataCommon中后存到dataCommonList中
dataCommon.setName("类别列的值");
dataCommon.setOtherName("证据名称的值");
dataCommonList.add(dataCommon);
//dataCommonList中存的值有一定规律,相同类别的是紧邻挨着的
String savePath = this.attachPath + File.separator + ContextUtil.getCurrentUser().getAccount() + "\\" + System.currentTimeMillis() + ".docx";
new CreateTable().createSimpleTable(dataCommonList,savePath);
导出word表格方法如下:
package com.ksource.pwlp.util; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;
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 org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc; import com.ksource.core.util.ContextUtil;
import com.ksource.pwlp.model.statistic.DataCommon; /**
* 创建证据材料清单表格
* @author dxy
*
*/
public class CreateTable { public void createSimpleTable(List<DataCommon> dataCommonList, String savePath) throws Exception {
String orgName = ContextUtil.getCurrentOrg().getOrgName();
XWPFDocument xdoc = new XWPFDocument();
XWPFParagraph xp = xdoc.createParagraph();
xp.setSpacingBefore(0);
XWPFRun r1 = xp.createRun();
XWPFRun r2 = xp.createRun();
r1.setText(orgName);
r1.setFontFamily("宋体");
r1.setFontSize(18);
r1.addBreak(); // 换行
r2.setText("证据清单");
r2.setFontFamily("宋体");
r2.setFontSize(22);
r2.setTextPosition(10);
r2.setBold(true);
r2.addBreak(); // 换行
xp.setAlignment(ParagraphAlignment.CENTER); Integer col_total_count = 4; // 表格最多的列数 XWPFTable xTable = xdoc.createTable(1, col_total_count); CTTbl ttbl = xTable.getCTTbl();
CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl
.getTblPr();
CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr
.addNewTblW();
tblWidth.setW(new BigInteger("8600"));
tblWidth.setType(STTblWidth.DXA); // 创建表头数据
int i = 0;
xTable.getRow(i).setHeight(500);
setCellText(xdoc, xTable.getRow(i).getCell(0), "序号", "FFFFFF", getCellWidth(0));
setCellText(xdoc, xTable.getRow(i).getCell(1), "类别", "FFFFFF", getCellWidth(1));
setCellText(xdoc, xTable.getRow(i).getCell(2), "证据名称", "FFFFFF", getCellWidth(2));
setCellText(xdoc, xTable.getRow(i).getCell(3), "备注", "FFFFFF", getCellWidth(3)); // 创建表格内容
i++;
String preGroupName = "";
String groupName = "";
int flag = 0;
int num = 1;
for (int i2 = i; i2 < dataCommonList.size()+1; i2++) {
XWPFTableRow row = xTable.insertNewTableRow(i2);
row.setHeight(450);
for (int j = 0, j2 = 0; j < col_total_count; j++, j2++) {
XWPFTableCell cell = row.createCell();
CTTc cttc = cell.getCTTc();
CTTcPr cellPr = cttc.addNewTcPr();
cellPr.addNewVAlign().setVal(STVerticalJc.CENTER);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(j2))); if (j == 0) {
if(preGroupName.equals(groupName)){
cell.setText(String.valueOf(num));
}else{
cell.setText(String.valueOf(++num));
}
}
if (j == 1) {
cell.setText(dataCommonList.get(i2-1).getName());
if(i2 > 1){
preGroupName = dataCommonList.get(i2-2).getName();
}
groupName = dataCommonList.get(i2-1).getName();
}
if (j == 2) {
cell.setText(dataCommonList.get(i2-1).getOtherName());
}
if (j == 3) {
cell.setText("");
}
} if(preGroupName.equals(groupName) && !"".equals(groupName)){
flag++;
if(i2 == dataCommonList.size()){
mergeCellsVertically(xTable, 0, i2-flag, i2);
mergeCellsVertically(xTable, 1, i2-flag, i2);
flag = 0;
}
}else{
if(flag > 0){
if(i2 < dataCommonList.size()){
if(i2 > 1 && !"".equals(preGroupName)){
mergeCellsVertically(xTable, 0, i2-1-flag, i2-1);
mergeCellsVertically(xTable, 1, i2-1-flag, i2-1);
flag = 0;
}
}
if(i2 == dataCommonList.size()){
mergeCellsVertically(xTable, 0, i2-1-flag, i2-1);
mergeCellsVertically(xTable, 1, i2-1-flag, i2-1);
flag = 0;
}
}
}
} FileOutputStream fos = new FileOutputStream(savePath);
xdoc.write(fos);
fos.close();
} /**
* 设置表头内容
* @param xDocument
* @param cell
* @param text
* @param bgcolor
* @param width
*/
private static void setCellText(XWPFDocument xdoc, XWPFTableCell cell,
String text, String bgcolor, int width) {
CTTc cttc = cell.getCTTc();
CTTcPr cellPr = cttc.addNewTcPr();
cellPr.addNewTcW().setW(BigInteger.valueOf(width));
XWPFParagraph paragraph = cell.getParagraphs().get(0);
paragraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
XWPFRun run = paragraph.createRun();
run.setFontFamily("仿宋_GB2312");
run.setFontSize(16); //设置表头单元格字号
//run.setBold(true); //设置表头单元格加粗
run.setText(text);
} /**
* 设置列宽
*
* @param index
* @return
*/
private static int getCellWidth(int index) {
int cwidth = 1000;
if (index == 0) {
cwidth = 1000;
} else if (index == 1) {
cwidth = 2100;
} else if (index == 2) {
cwidth = 3200;
} else if (index == 3) {
cwidth = 2100;
}
return cwidth;
} /**
* 跨行合并
*
* @param table
* @param col
* @param fromRow
* @param toRow
*/
public static 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 value
cell.getCTTc().addNewTcPr().addNewVMerge()
.setVal(STMerge.RESTART);
} else {
// Cells which join (merge) the first one, are set with CONTINUE
cell.getCTTc().addNewTcPr().addNewVMerge()
.setVal(STMerge.CONTINUE);
}
}
} /**
* 将文件转换成byte数组
* @param filePath
* @return
*/
public byte[] fileToByte(File file){
byte[] buffer = null;
try
{
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
{
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return buffer;
}
}
导出效果图如下:

poi导出word表格跨行的更多相关文章
- poi导出word表格详解 超详细了
转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138 一.效果如下 二.js代码 function export_word( ...
- poi导出word表格
代码如下: package com.ksource.pwlp.util; import java.io.FileOutputStream; import java.math.BigInteger; i ...
- 使用POI导出Word(含表格)的实现方式及操作Word的工具类
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- poi导出word
最近做了个poi导出word的功能 下面是代码: 一个可以参考的例子: package com.lzb.crm.web; import java.io.FileOutputStream; import ...
- java工具类POI导出word
1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...
- 使用POI创建word表格合并单元格兼容wps
poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...
- PowerDesiger 15逆向生成工程E-R图及导出word表格
应用环境:win8(64位)+oracle10g(32位)服务端+PowerDesigner15 需求:oracle数据库中的表结构是web工程框架hibernate 自动生成,现需要将数据库中已有的 ...
- Maven项目结合POI导出Excl表格Demo-亲测可用
Maven项目结合POI导出Excl表格 一.POM文件添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...
- poi导出word时设置兼容性
接上一篇poi导出word http://www.cnblogs.com/xiufengd/p/4708680.html. public static void setAuto(XWPFDocumen ...
随机推荐
- 单词cymophanite猫眼石cymophanite英语
金绿石的猫眼石(Cymophanite)是所谓正宗的猫眼石,非常罕有,尤其是5卡以上而质优的,其售价可以高达七万多港元一卡. 相传这类猫眼石是宝石学家的宝石,从此可知其地位在珠宝玉石之中的重要性.颜色 ...
- Java深入学习(2):并发队列
并发队列: 在并发队列中,JDK有两套实现: ConcurrentLinkedQueue:非阻塞式队列 BlockingQueue:阻塞式队列 阻塞式队列非阻塞式队列的区别: 阻塞式队列入列操作的时候 ...
- 解决bootstrap模态框居中问题
完美解决办法: 在bootstrap.js或bootstrap.min.js文件中找到Modal.prototype.show方法. 在that.$element.addClass('in').att ...
- ORA-12514: 监听程序当前无法识别连接描述符中请求的服务
/** 异常:ORA-12514: 监听程序当前无法识别连接描述符中请求的服务 * 背景:在很长一段时间都在连接远程开发库,曾偶尔有一次想要连接本地的库进行sql测试,发现连接失败,起初一直有无监听. ...
- FFmpeg Windows下安装与测试
FFmpeg 简介 FFmpeg的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward",FFmpeg是一套可以用来记录.转换数字音频.视 ...
- 【转】如何把变量或者数组定义到SDRAM及任意位置
我们开发软件的时候,经常会遇到到一个问题,就是内存不够,这个时候就纠结了,怎么办,有两种方法,第一种是扩展内存,外加SRAM或者SDRAM:第二种应该就是优化代码,也就是通常所说的把数组大小减一减,代 ...
- centos7 增加开放端口
添加 firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 重新载入 不然不生效 ...
- Tensorcore使用方法
用于深度学习的自动混合精度 深度神经网络训练传统上依赖IEEE单精度格式,但在混合精度的情况下,可以训练半精度,同时保持单精度网络的精度.这种同时使用单精度和半精度表示的技术称为混合精度技术. 混合 ...
- Educational Codeforces Round 69 (Rated for Div. 2) E. Culture Code
Educational Codeforces Round 69 (Rated for Div. 2) E. Culture Code 题目链接 题意: 给出\(n\)个俄罗斯套娃,每个套娃都有一个\( ...
- WebLogic任意文件上传漏洞(CVE-2019-2618)
WebLogic任意文件上传漏洞(CVE-2019-2618) 0x01 漏洞描述 漏洞介绍 CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口, ...