一篇在一个Excel表中创建多个sheet的代码
package projectUtil; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment; import java.util.List;
import java.util.Map; /**
* 创建Excel表
* @author tian
* @date 2019/3/2315:46
*/
public class WorkbookUtil {
private HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 public HSSFWorkbook getWorkbook() {
return this.workbook;
} public HSSFSheet writeExcel(List<Map<String, Object>> list, List<String> head, String sheetName) {
HSSFSheet sheet;// 创建一个Excel的Sheet
if (!StringUtils.isBlank(sheetName)) {
sheet = workbook.createSheet(sheetName);// 创建一个Excel的Sheet
} else {
sheet = workbook.createSheet("Sheet");// 创建一个Excel的Sheet
}
HSSFRow row4 = sheet.createRow(0); HSSFCellStyle style4 = workbook.createCellStyle();
style4.setAlignment(HorizontalAlignment.CENTER);//水平居中
style4.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
style4.setWrapText(true);//自动换行
style4.setAlignment(HorizontalAlignment.CENTER);//水平居中
style4.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
HSSFFont font4 = workbook.createFont();
// font.setFontName("华文行楷");//设置字体名称
font4.setFontHeightInPoints((short) 12);//设置字号
// font4.setBold( true);
style4.setFont(font4);
for (int i = 0; i < head.size(); i++
) {
sheet.setColumnWidth(i, 20 * 256);
HSSFCell cell4_1 = row4.createCell(i);
cell4_1.setCellValue(head.get(i));
cell4_1.setCellStyle(style4);
}
for (int i = 0; i < list.size(); i++) {
HSSFRow row5 = sheet.createRow(i + 1);
for (int y = 0; y < head.size(); y++
) {
HSSFCell cell5_1 = row5.createCell(y);
cell5_1.setCellValue(list.get(i).get(head.get(y)) == null ? "" : list.get(i).get(head.get(y)) + "");
cell5_1.setCellStyle(style4);
} } return sheet;
} }
自己写的工具类,可以参考一下,如果有bug希望各位大侠指教。
List<Map<String, Object>> rows = new ArrayList<>();
List<Map<String, Object>> zifu = new ArrayList<>();
List<Map<String, Object>> yinhang = new ArrayList<>();
for (Map one : list) {
Integer state = (Integer) one.get("state");
Map<String, Object> reMap = new LinkedHashMap<>();
reMap.put("提现编号", one.get("id"));
reMap.put("用户ID", one.get("userId"));
reMap.put("用户名称", one.get("name"));
reMap.put("用户手机号", one.get("phone"));
reMap.put("银行卡户主名称", one.get("userName"));
reMap.put("银行", one.get("bankName"));
reMap.put("所属支行", one.get("subBranchName"));
reMap.put("银行卡号", one.get("cardNumber"));
reMap.put("提现金额", one.get("arrivalAmountMoney"));
reMap.put("提现状态", state == -1 ? "处理中" : state == 1 ? "已处理" : state == 0 ? "待处理" : state == 2 ? "信息错误" : "千万不要打款");
reMap.put("支付宝账号", one.get("withdraw"));
reMap.put("提现方式", (Integer) one.get("withdrawType") == 0 ? "支付宝" : "银行卡");
reMap.put("备注", one.get("remark"));
reMap.put("打款进度", "");
rows.add(reMap);
if ((Integer) one.get("withdrawType") == 0) {//支付宝提现
Map<String, Object> ss = reMap;
ss.remove("银行卡户主名称", one.get("userName"));
ss.remove("银行", one.get("bankName"));
ss.remove("银行卡号", one.get("cardNumber"));
ss.remove("所属支行", one.get("subBranchName"));
zifu.add(ss);
}
if ((Integer) one.get("withdrawType") == 1) {//银行卡提现
Map<String, Object> ss = reMap;
ss.remove("支付宝账号", one.get("withdraw"));
yinhang.add(ss);
}
}
List<String> head = new ArrayList<>();
head.add("提现编号");
head.add("用户ID");
head.add("用户名称");
head.add("用户手机号");
head.add("银行卡户主名称");
head.add("银行");
head.add("所属支行");
head.add("银行卡号");
head.add("提现金额");
head.add("提现状态");
head.add("支付宝账号");
head.add("提现方式");
head.add("备注");
head.add("打款进度");
WorkbookUtil workbookUtil = new WorkbookUtil();
HSSFSheet sheet1 = workbookUtil.writeExcel(rows, head, "用户总提现");
sheet1.setColumnWidth(5,30 * 256);
sheet1.setColumnWidth(6,30 * 256);
sheet1.setColumnWidth(7,30 * 256);
List<String> head1= (List<String>) ((ArrayList<String>) head).clone();
head1.remove(10);
HSSFSheet sheet2 = workbookUtil.writeExcel(yinhang, head1, "银行卡提现");
sheet2.setColumnWidth(5,30 * 256);
sheet2.setColumnWidth(6,30 * 256);
sheet2.setColumnWidth(7,30 * 256);
List<String> head2=(List<String>) ((ArrayList<String>) head).clone();
head2.remove(4);
head2.remove(4);
head2.remove(4);
head2.remove(4);
HSSFSheet sheet3 = workbookUtil.writeExcel(zifu, head2, "支付宝提现");
// 第六步,将文件存到指定位置
ServletOutputStream out = response.getOutputStream();
try {
response.setContentType("application/vnd.ms-excel;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + new String("用户提现".getBytes("UTF-8"), "ISO8859-1") + new SimpleDateFormat("yyyy-MM-dd->HH").format(new Date()) + ".xls");
workbookUtil.getWorkbook().write(out);
} catch (Exception e) {
e.printStackTrace();
} finally {
out.close();
}
return;
使用的方法片段。记录一下
一篇在一个Excel表中创建多个sheet的代码的更多相关文章
- C#利用NPOI在同一个Excel文件中创建多个sheet
借用NPOI来实现,要在同一Excel文件中创建多个sheet,只需要在同一个workbook中创建多个sheet即可.要注意的是,sheet的名字一定不能重复.下面是实现的代码: private v ...
- 【PHP】将EXCEL表中的数据轻松导入Mysql数据表
在网络上有不较多的方法,在此介绍我已经验证的方法. 方法一.利用EXCEL表本身的功能生成SQL代码 ①.先在“phpmyadmin”中建立数据库与表(数据库:excel,数据表:excel01,字段 ...
- 获取Excel表中各个Sheet的方法
获取Excel表中各个Sheet的方法 private void simpleButton2_Click(object sender, EventArgs e) { OfdBOM.Filter = & ...
- 此文本文件包含的数据无法放置在一个工作表中 gb2312
excel导入csv,csv要从unicode转为gb2312, 否则提示:此文本文件包含的数据无法放置在一个工作表中
- 将从数据库中获取的数据写入到Excel表中
pom.xml文件写入代码,maven自动加载poi-3.1-beta2.jar <!-- https://mvnrepository.com/artifact/poi/poi --> & ...
- 将EXCEL表中的数据轻松导入Mysql数据表
转载自:http://blog.163.com/dielianjun@126/blog/static/164250113201042310181431/ 在网络上有不较多的方法,在此介绍我已经验证的方 ...
- 将Excel表中的数据导入MySQL数据库
原文地址: http://fanjiajia.cn/2018/09/26/%E5%B0%86Excel%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E5% ...
- 【数据传输 2】批量导入的前奏:将Excel表中的数据转换为DataTable类型
导读:我们知道,在数据库中,数据集DataSet是由多张DataTable表组成.所以,如果我们需要将数据从外部导入到数据库中,那么要做的很重要的一步是将这些数据转换为数据库可以接受的结构.今天在用S ...
- 复制excel表,往excel表中写入数据
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import jav ...
随机推荐
- javascript总结24:Array常用的队列操作和排序方法
1 数组-引用类型 JavaScript中的内置对象 复习数组的使用 两种创建数组的方式 Array对象的属性 length 获取数组的长度(元素个数) 2 常用方法 : 检测数组 instanceo ...
- 编写高质量代码改善C#程序的157个建议——建议117:使用SSL确保通信中的数据安全
建议117:使用SSL确保通信中的数据安全 SSL(Secure Socket Layer)最初是由NetScape公司设计的,用于Web安全的网络协议.目前它已经广泛应用到各类网络传输通信中了.SS ...
- Shell脚本中$0、$?、$!、$$、$*、$#、$@
1. $$Shell本身的PID(ProcessID) 2. $!Shell最后运行的后台Process的PID 3. $?最后运行的命令的结束代码(返回值) 4. $-使用Set命令设定的Flag一 ...
- C#连接MySql数据库代码
之前学JAVA的时候,老师讲数据库的时候,讲到可以用一个类来连接数据库,叫做Dao层,今天要用C#做上位机,也有一些数据要写到数据库中去,我就想,能不能也给C#写一个这样的Dao层来连接数据库,我就去 ...
- Cntlm
SourceForge页面 作用是转发请求到代理 可以同时加上域验证信息(为各种NTLM认证?) gradle.cmd.Terminal等工具或软件可能无法或者说没有使用系统/浏览器设置的代理,因为可 ...
- 读取二元组列表,打印目录的层级结构-----C++算法实现
要求是--某个文件中存储了一个最多3层的层级结构,其中每个元素都是一个自然数,它的存储方法是一个二元组的列表,每个二元组的形式为:(元素,父元素).现在希望能够通过读取该二元组列表,打印出目录的层级结 ...
- vim 插入时间戳的方法
这里主要说明用内置函数 strftime 来插入,而不用 :r!date 或类似方法. 用命令 "=strftime('%c')<Ret>p ,或<C-r>=strf ...
- nowcoder(牛客网)普及组模拟赛第一场 解题报告
蒟蒻我可能考了一场假试 T1 绩点 这题没什么好说的,应该是只要会语言的就会做. T2 巨大的棋盘 一个模拟题吧qwq,但是要注意取模的时候先加上n或者m再取模,要不然会错的. #include< ...
- jQuery动态数字翻滚计数到指定数字的文字特效代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- “全栈2019”Java第七十八章:内部类可以继承其他类吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...