复合表头的实现代码
import com.alibaba.fastjson.JSON;
import com.enation.app.javashop.core.extended.enums.CheckStatusEnum;
import com.enation.app.javashop.core.extended.enums.IndexEnums.IndexPayTypesEnum;
import com.enation.app.javashop.core.extended.enums.PayWay;
import com.enation.app.javashop.core.extended.model.dos.AssignWorkerDO;
import com.enation.app.javashop.core.extended.model.dos.OrderIODO;
import com.enation.app.javashop.core.extended.model.dos.OrderServiceRecordDO;
import com.enation.app.javashop.core.extended.model.dos.OrderSettleDO;
import com.enation.app.javashop.core.extended.model.vo.*;
import com.enation.app.javashop.core.extended.service.CompanyConfigManager;
import com.enation.app.javashop.core.extended.service.MediumSettleManager;
import com.enation.app.javashop.core.extended.service.MediumSettleQueryManager;
import com.enation.app.javashop.core.extended.service.OrderServiceManager;
import com.enation.app.javashop.core.extended.util.ServiceUtil;
import com.enation.app.javashop.core.trade.order.model.dos.OrderDO;
import com.enation.app.javashop.core.trade.order.service.OrderQueryManager;
import com.enation.app.javashop.framework.context.UserContext;
import com.enation.app.javashop.framework.database.DaoSupport;
import com.enation.app.javashop.framework.database.Page;
import com.enation.app.javashop.framework.util.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
X
SSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("收入明细表");
XSSFCellStyle style = wb.createCellStyle(); // 样式对象
style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(XSSFCellStyle.ALIGN_CENTER);// 水平
String wechat = IndexPayTypesEnum.WECHAT.desc();
String cash = IndexPayTypesEnum.CASH.desc();
String pos = IndexPayTypesEnum.POS.desc();
String alipay = IndexPayTypesEnum.ALIPAY.desc();
XSSFRow row0 = sheet.createRow(0);
XSSFRow row1 = sheet.createRow(1);
createCellOne(sheet, row0, style, 0, "订单编号");
createCellOne(sheet, row0, style, 1, "楼栋");
createCellOne(sheet, row0, style, 2, "病区");
createCellOne(sheet, row0, style, 3, "床位号");
createCellOne(sheet, row0, style, 4, "患者姓名");
createCellOne(sheet, row0, style, 5, "上期结余");
this.createCellTwo(sheet, style, row0, row1, 6, "上期结余方式");
createCellOne(sheet, row0, style, 10, "本期预收");
this.createCellTwo(sheet, style, row0, row1, 11, "预收方式");
createCellOne(sheet, row0, style, 15, "确认收入日期");
createCellOne(sheet, row0, style, 16, "确认收入周期");
createCellOne(sheet, row0, style, 17, "本期收入");
this.createCellTwo(sheet, style, row0, row1, 18, "收入方式");
createCellOne(sheet, row0, style, 22, "本期结余");
this.createCellTwo(sheet, style, row0, row1, 23, "结余方式");
private void createCellOne(XSSFSheet sheet, XSSFRow row1, XSSFCellStyle style, int column, String value) {
//第一个格子
XSSFCell cell = row1.createCell(column);
cell.setCellValue(value);
cell.setCellStyle(style);//样式,居中
CellRangeAddress region = new CellRangeAddress(0, 1, column, column);
sheet.addMergedRegion(region);
}
private void createCellTwo(XSSFSheet sheet, XSSFCellStyle style, XSSFRow row0, XSSFRow row1, int startColumn, String value) {
XSSFCell cell = row0.createCell(startColumn);
cell.setCellValue(value);
cell.setCellStyle(style);
CellRangeAddress region = new CellRangeAddress(0, 0, startColumn, startColumn+3);
sheet.addMergedRegion(region);
XSSFCell cell1 = row1.createCell(startColumn);
cell1.setCellValue(IndexPayTypesEnum.WECHAT.desc());
XSSFCell cell2 = row1.createCell(startColumn+1);
cell2.setCellValue(IndexPayTypesEnum.ALIPAY.desc());
XSSFCell cell3 = row1.createCell(startColumn+2);
cell3.setCellValue(IndexPayTypesEnum.CASH.desc());
XSSFCell cell4 = row1.createCell(startColumn+3);
cell4.setCellValue(IndexPayTypesEnum.POS.desc());
}