首页 > 其他分享 >生成多个Sheet页的表格

生成多个Sheet页的表格

时间:2024-07-04 14:09:56浏览次数:10  
标签:return 表格 handers fileName other Sheet dataset 生成 public

package com.cqbb.common.utils.poi;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.http.MediaType;

import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;

public class ExportSheetUtil {
/**
* 拆解并导出多重Excel
*/
public static void exportManySheetExcel(String fileName, List<ExcelSheet> mysheets, HttpServletResponse response) {
//创建工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//表头样式
HSSFCellStyle style = wb.createCellStyle();
// 垂直
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 水平
style.setAlignment(HorizontalAlignment.CENTER);
//字体样式
HSSFFont fontStyle = wb.createFont();
fontStyle.setFontName("微软雅黑");
fontStyle.setFontHeightInPoints((short) 12);
style.setFont(fontStyle);
for (ExcelSheet excel : mysheets) {
//新建一个sheet
//获取该sheet名称
HSSFSheet sheet = wb.createSheet(excel.getFileName());
//获取sheet的标题名
String[] handers = excel.getHanders();
//第一个sheet的第一行为标题
HSSFRow rowFirst = sheet.createRow(0);
//写标题
for (int i = 0; i < handers.length; i++) {
//获取第一行的每个单元格
HSSFCell cell = rowFirst.createCell(i);
//往单元格里写数据
cell.setCellValue(handers[i]);
//加样式
cell.setCellStyle(style);
//设置每列的列宽
sheet.setColumnWidth(i, 4000);
}
//写数据集
List<String[]> dataset = excel.getDataset();
for (int i = 0; i < dataset.size(); i++) {
//获取该对象
String[] data = dataset.get(i);
//创建数据行
HSSFRow row = sheet.createRow(i + 1);
for (int j = 0; j < data.length; j++) {
//设置对应单元格的值
row.createCell(j).setCellValue(data[j]);
}
}
}

// 下载文件谷歌文件名会乱码,用IE
try {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));
response.setHeader("Cache-Control", "No-cache");
response.flushBuffer();
wb.write(response.getOutputStream());
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}



package com.cqbb.common.utils.poi;

import java.util.Arrays;
import java.util.List;

public class ExcelSheet {

/*** sheet的名称*/
private String fileName;

/*** sheet里的标题*/
private String[] handers;

/*** sheet里的数据集*/
private List<String[]> dataset;

public ExcelSheet(String fileName, String[] handers, List<String[]> dataset) {
this.fileName = fileName;
this.handers = handers;
this.dataset = dataset;
}

public String getFileName() {
return this.fileName;
}

public String[] getHanders() {
return this.handers;
}

public List<String[]> getDataset() {
return this.dataset;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public void setHanders(String[] handers) {
this.handers = handers;
}

public void setDataset(List<String[]> dataset) {
this.dataset = dataset;
}

public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof ExcelSheet)) {
return false;
} else {
ExcelSheet other = (ExcelSheet)o;
if (!other.canEqual(this)) {
return false;
} else {
label39: {
Object this$fileName = this.getFileName();
Object other$fileName = other.getFileName();
if (this$fileName == null) {
if (other$fileName == null) {
break label39;
}
} else if (this$fileName.equals(other$fileName)) {
break label39;
}

return false;
}

if (!Arrays.deepEquals(this.getHanders(), other.getHanders())) {
return false;
} else {
Object this$dataset = this.getDataset();
Object other$dataset = other.getDataset();
if (this$dataset == null) {
if (other$dataset != null) {
return false;
}
} else if (!this$dataset.equals(other$dataset)) {
return false;
}

return true;
}
}
}
}

protected boolean canEqual(Object other) {
return other instanceof ExcelSheet;
}

public int hashCode() {
int result = 1;
Object $fileName = this.getFileName();
result = result * 59 + ($fileName == null ? 43 : $fileName.hashCode());
result = result * 59 + Arrays.deepHashCode(this.getHanders());
Object $dataset = this.getDataset();
result = result * 59 + ($dataset == null ? 43 : $dataset.hashCode());
return result;
}

public String toString() {
return "ExcelSheet(fileName=" + this.getFileName() + ", handers=" + Arrays.deepToString(this.getHanders()) + ", dataset=" + this.getDataset() + ")";
}

}


标签:return,表格,handers,fileName,other,Sheet,dataset,生成,public
From: https://www.cnblogs.com/michaelcnblogs/p/18283757

相关文章

  • 若依框架前端表格自适应
    1.背景问题描述:如图,若依前端表格高度都是固定写死的,因此会出现底部空一部分,现在希望自适应表格,使得表格一屏展示,且在隐藏查询条件等操作,导致屏幕大小变化时,表格可以同步自适应。 问题现状:很多时候,前端开发都是尽可能本机调整到刚刚好的高度,但不同用户不同电脑分辨率和浏览......
  • java高仿真数据生成器-需要的拿去
    java高仿真数据生成器源码-需要的拿去nit-random-tools介绍:高仿真数据生成器逆天开源java证号码,姓名,职业,日期,手机号生成器功能列表编号功能描述class1号生成器NitIdcardGenerator2姓名生成器NitChineseNameGenerator3职业生成器NitJobGenerator4日期生成器N......
  • 编译原理 第六章&编译原理必考大题: 语义分析及中间代码生成&必考大题语句翻译
    第六章语义分析及中间代码生成&必考大题语句翻译文章目录第六章语义分析及中间代码生成&必考大题语句翻译写在最前6.1语义分析6.2中间代码6.2.1逆波兰式6.2.2四元式6.2.3三元式6.3语句翻译(必考大题)6.3.1布尔表达式的翻译6.3.2if语句的翻译6.3.3while语句翻......
  • Lumière:开创性的视频生成模型及其应用
     视频内容创造领域迎来了突破性进展,但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素,模型必须确保视频中的运动在时间上是连贯和平滑的,避免出现不自然的跳跃或断裂。空间关系的准确性也至关重......
  • pdf的表格怎么转换成word?
    Adobe设计PDF文件格式的目的是支持跨平台、多媒体集成的信息出版和发布,特别是对网络信息发布的支持。为了实现这一目标,PDF具有许多其他电子文件格式无法比拟的优势。如今,越来越多的电子书籍、产品描述、公司通知、网络数据和电子邮件开始使用PDF格式文件。但是PDF却不能直接编辑,因......
  • Java实现生成二维码及二维码解析
    1、导入所需的工具类jar包<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>com.google.zxing</gro......
  • 迭代器&&生成器&&可迭代对象
    迭代器定义:1.当类中定义了__iter__和__next__两个方法。2.__iter__方法需要返回对象本身,即:self3.__next__方法,返回下一个数据,如果没有数据了(不返回数据了),则需要抛出一个StopIteration的异常。接下来,通过代码来认识它classIT(object):def__init__(self):......
  • ChatPPT:AI驱动的智能PPT一键生成与美化工具
    ChatPPT是由必优科技开发的一款AI超级PPT工具,它通过对话式AI创作,为用户提供快速生成和美化PPT的全流程服务。以下是该平台的一些核心功能和特点:核心功能:一键生成PPT:用户只需输入PPT主题,ChatPPT即可快速生成文档。对话式AI创作:涵盖6大模块,超过1400类全流程AI文档服务,使用户能......
  • 复述生成任务分类-笔记-Task-Oriented Paraphrase Analytics
    目录前言正文 复述生成和搜索引擎查询建议和扩展建议(QuerySuggestionandExpansion)复述生成和数据集数据增强(DataAugmentation):生成保持类别标签的合成数据,用于增加训练或测试数据集。信息安全和复述生成对抗样本生成(AdversarialExampleGeneration):保留标......
  • 外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word
    TextInTools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写、古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF、WORD、EXCEL、JPG、PPT等各类格式文件的转化。 TextInTools特点免费:所有产品提供每日200页免费额度,覆盖日常使用需求。方......