package com.smart.common.util;
import com.smart.common.constant.ExcelDataType;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.Color;
import java.io.*;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.util.List;
import java.util.*;
/**
* 导出Excel文件(导出“XLSX”格式,支持大数据量导出 @see org.apache.poi.ss.SpreadsheetVersion)
*/
public class ExcelExport {
private static Logger log = LoggerFactory.getLogger(ExcelExport.class);
/**
* 单元格靠左对齐
*/
public static final Integer CELL_ALIGN_LEFT = 1;
/**
* 单元格居中对齐
*/
public static final Integer CELL_ALIGN_CENTER = 2;
/**
* 单元格靠右对齐
*/
public static final Integer CELL_ALIGN_RIGHT = 3;
/**
* 工作薄对象
*/
private SXSSFWorkbook wb;
/**
* 工作表对象
*/
private Sheet sheet;
/**
* 样式列表
*/
private Map<String, CellStyle> styles;
/**
* 当前行号
*/
private int rownum;
/**
* 导出模板工作薄对象
*/
private Workbook workbook;
/**
* 构造函数
*
* 导出文件模板,读取第一个工作表
* @param headerNum
* 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ExcelExport(String fileName, int headerNum) throws InvalidFormatException, IOException {
this(new File(fileName), headerNum);
}
/**
* 构造函数
*
* 导出文件模板对象,读取第一个工作表
* @param headerNum
* 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public ExcelExport(File file, int headerNum) throws InvalidFormatException, IOException {
this(file, headerNum, 0);
}
/**
* 构造函数
*
* 导出文件模板
* @param headerNum
* 标题行号,数据行号=标题行号+1
* @param sheetIndex
* 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ExcelExport(String fileName, int headerNum, int sheetIndex) throws InvalidFormatException, IOException {
this(new File(fileName), headerNum, sheetIndex);
}
/**
* 构造函数
*
* 导出文件模板对象
* @param headerNum
* 标题行号,数据行号=标题行号+1
* @param sheetIndex
* 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public ExcelExport(File file, int headerNum, int sheetIndex) throws InvalidFormatException, IOException {
this(file.getName(), new FileInputStream(file), headerNum, sheetIndex);
}
/**
* 构造函数
*
* 导出文件模板对象
* @param headerNum
* 标题行号,数据行号=标题行号+1
* @param sheetIndex
* 工作表编号
* @throws IOException
*/
public ExcelExport(String fileName, InputStream is, int headerNum, int sheetIndex)
throws IOException {
if (StringUtils.isBlank(fileName)) {
throw new RuntimeException("导入文档为空!");
} else if (fileName.toLowerCase().endsWith("xls")) {
this.workbook = new HSSFWorkbook(is);
} else if (fileName.toLowerCase().endsWith("xlsx")) {
this.workbook = new XSSFWorkbook(is);
} else if (fileName.toLowerCase().endsWith("xlsm")) {
this.workbook = new XSSFWorkbook(is);
} else {
throw new RuntimeException("文档格式不正确!");
}
if (this.workbook.getNumberOfSheets() < sheetIndex) {
throw new RuntimeException("文档中没有工作表!");
}
this.sheet = this.workbook.getSheetAt(sheetIndex);
if (this.sheet.getLastRowNum() < 0) {
throw new RuntimeException("文档模板错误!");
}
this.rownum = headerNum + 1;
this.styles = createStyles(workbook);
log.debug("Initialize success.");
}
/**
* 构造函数 -- SXSSFWorkbook
* @param fileName
* @param headerNum
* @param sheetIndex
* @param batchType
* @throws IOException
*/
public ExcelExport(String fileName, int headerNum, int sheetIndex, String batchType)
throws IOException {
if (StringUtils.isBlank(fileName)) {
throw new RuntimeException("导出文档为空!");
} else {
InputStream is = new FileInputStream(new File(fileName));
XSSFWorkbook workb = new XSSFWorkbook(is);
this.wb = new SXSSFWorkbook(workb, 1000);
if (this.wb.getNumberOfSheets() < sheetIndex) {
throw new RuntimeException("文档中没有工作表!");
}
this.sheet = this.wb.getSheetAt(sheetIndex);
this.rownum = headerNum + 1;
this.styles = createStyles(wb);
log.debug("Initialize success.");
}
}
/**
* 构造函数
*
* @param title
* 表格标题,传“空值”,表示无标题
* @param headerMap
* 表头数组
*/
public ExcelExport(String title, Map<String, String> headerMap) {
List<String> headerList = new ArrayList<String>();
headerList.add("序号");
for (String key : headerMap.keySet()) {
headerList.add(headerMap.get(key));
}
initialize(title, headerList);
}
/**
* 构造函数
*
* @param title
* 表格标题,传“空值”,表示无标题
* @param headerList
* 表头列表
*/
public ExcelExport(String title, List<String> headerList) {
// 自动增加序号列
headerList.add(0, "序号");
initialize(title, headerList);
}
/**
* 初始化函数
*
* @param title
* 表格标题,传“空值”,表示无标题
* @param headerList
* 表头列表
*/
private void initialize(String title, List<String> headerList) {
this.wb = new SXSSFWorkbook(500);
this.sheet = wb.createSheet("Export");
this.styles = createStyles(wb);
// Create title
if (StringUtils.isNotBlank(title)) {
Row titleRow = sheet.createRow(rownum++);
titleRow.setHeightInPoints(30);
Cell titleCell = titleRow.createCell(0);
titleCell.setCellStyle(styles.get("title"));
titleCell.setCellValue(title);
sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(),
headerList.size() - 1));
}
// Create header
if (headerList == null) {
throw new RuntimeException("headerList not null!");
}
Row headerRow = sheet.createRow(rownum++);
headerRow.setHeightInPoints(16);
for (int i = 0; i < headerList.size(); i++) {
Cell cell = headerRow.createCell(i);
cell.setCellSty
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
介绍 基于 SpringBoot + Vue 的智能停车场项目。 背景 在现代城市中,交通拥堵和停车难题一直是令人头疼的难题。为了解决这一问题,智慧停车系统应运而生。智慧停车系统利用物联网技术和实时数据传输,提供了一种更智能、高效的停车管理方案。 本文将介绍如何利用MQTT(Message Queuing Telemetry Transport)协议搭建智慧停车系统,并结合Spring Boot和Vue框架进行开发。 基础环境 JDK1.8、Maven、Mysql、IntelliJ IDEA、payCloud 内置功能 系统管理:角色管理、接口管理、系统菜单、全局配置 账号管理:用户管理、合作单位 系统监控:监控大屏、日志监控 财务管理:订单列表 停车记录:停车记录 车辆管理:车辆管理 车牌识别:车牌识别 停车场管理:停车场管理
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot + Vue使用MQTT实现智慧停车系统.zip (545个子文件)
cashier.css 415KB
iview.css 316KB
layui.css 71KB
iconfont.css 71KB
index.css 20KB
layer.css 14KB
index.css 13KB
okadmin.css 12KB
layui.mobile.css 10KB
viewer.css 9KB
viewer.min.css 8KB
demo.css 8KB
awesome.css 8KB
laydate.css 7KB
metroStyle.css 6KB
zTreeStyle.css 6KB
reset.css 6KB
oksub.css 5KB
cropper.css 5KB
login_style.css 4KB
common.css 4KB
cropper.min.css 4KB
lightbox.css 3KB
main.css 3KB
lightbox.min.css 2KB
login_new.css 2KB
iview-my.css 2KB
nprogress.css 1KB
login_reset.css 1KB
code.css 1KB
okadmin.theme.css 905B
iconfont.eot 90KB
iconfont.eot 41KB
59.gif 10KB
22.gif 10KB
loading.gif 8KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
zTreeStandard.gif 5KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
20.gif 5KB
29.gif 5KB
metro.gif 5KB
70.gif 4KB
5.gif 4KB
17.gif 4KB
27.gif 4KB
9.gif 4KB
44.gif 4KB
11.gif 4KB
8.gif 4KB
3.gif 4KB
23.gif 4KB
34.gif 4KB
41.gif 4KB
38.gif 4KB
65.gif 3KB
32.gif 3KB
45.gif 3KB
7.gif 3KB
12.gif 3KB
26.gif 3KB
60.gif 3KB
2.gif 3KB
40.gif 3KB
25.gif 3KB
19.gif 3KB
66.gif 3KB
18.gif 3KB
46.gif 3KB
10.gif 3KB
28.gif 3KB
51.gif 3KB
57.gif 3KB
67.gif 3KB
0.gif 3KB
48.gif 3KB
43.gif 3KB
30.gif 2KB
61.gif 2KB
33.gif 2KB
69.gif 2KB
14.gif 2KB
47.gif 2KB
36.gif 2KB
49.gif 2KB
58.gif 2KB
6.gif 2KB
54.gif 2KB
53.gif 2KB
共 545 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
良月柒
- 粉丝: 5511
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ta-lib-0.5.1-cp311-cp311-win32.whl
- ta-lib-0.5.1-cp311-cp311-win-arm64.whl
- ta-lib-0.5.1-cp311-cp311-win-amd64.whl
- 微信小程序开发-地图定位.zip
- ta-lib-0.5.1-cp310-cp310-win32.whl
- ta-lib-0.5.1-cp313-cp313-win32.whl
- ta-lib-0.5.1-cp313-cp313-win-amd64.whl
- 这是一个基于html的心形代码.zip
- 安卓系统开发的全部教程
- ta-lib-0.5.1-cp312-cp312-win32.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功