数据导出 写入到excle文件
- import com.google.common.collect.Lists;
- import com.google.common.collect.Maps;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.apache.poi.ss.usermodel.*;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.text.SimpleDateFormat;
- import java.util.*;
- public class WriterExcelUtil {
- private static final Logger LOGGER = LoggerFactory.getLogger(WriterExcelUtil.class.getName());
- public static void main(String[] args) {
- String path = "E://demo.xlsx";
- String name = "test";
- List<String> titles =Lists.newArrayList();
- titles.add("id");
- titles.add("name");
- titles.add("age");
- titles.add("birthday");
- titles.add("gender");
- titles.add("date");
- List<Map<String, Object>> values = Lists.newArrayList();
- for (int i = 0; i < 10; i++) {
- Map<String, Object> map = Maps.newHashMap();
- map.put("id", i + 1D);
- map.put("name", "test_" + i);
- map.put("age", i * 1.5);
- map.put("gender", "man");
- map.put("birthday", new Date());
- map.put("date", Calendar.getInstance());
- values.add(map);
- }
- System.out.println(writerExcel(path, name, titles, values));
- }
- /**
- * 数据写入Excel文件
- *
- * @param path 文件路径,包含文件全名,例如:D://file//demo.xls
- * @param name sheet名称
- * @param titles 行标题列
- * @param values 数据集合,key为标题,value为数据
- * @return True\False
- */
- public static boolean writerExcel(String path, String name, List<String> titles, List<Map<String, Object>> values) {
- LOGGER.info("path : {}", path);
- String style = path.substring(path.lastIndexOf("."), path.length()).toUpperCase(); // 从文件路径中获取文件的类型
- return generateWorkbook(path, name, style, titles, values);
- }
- /**
- * 将数据写入指定path下的Excel文件中
- *
- * @param path 文件存储路径
- * @param name sheet名
- * @param style Excel类型
- * @param titles 标题串
- * @param values 内容集
- * @return True\False
- */
- private static boolean generateWorkbook(String path, String name, String style, List<String> titles, List<Map<String, Object>> values) {
- LOGGER.info("file style : {}", style);
- Workbook workbook;
- if ("XLS".equals(style.toUpperCase())) {
- workbook = new HSSFWorkbook();
- } else {
- workbook = new XSSFWorkbook();
- }
- // 生成一个表格
- Sheet sheet;
- if (null == name || "".equals(name)) {
- sheet = workbook.createSheet(); // name 为空则使用默认值
- } else {
- sheet = workbook.createSheet(name);
- }
- // 设置表格默认列宽度为15个字节
- sheet.setDefaultColumnWidth((short) 15);
- // 生成样式
- Map<String, CellStyle> styles = createStyles(workbook);
- /*
- * 创建标题行
- */
- Row row = sheet.createRow(0);
- // 存储标题在Excel文件中的序号
- Map<String, Integer> titleOrder = Maps.newHashMap();
- for (int i = 0; i < titles.size(); i++) {
- Cell cell = row.createCell(i);
- cell.setCellStyle(styles.get("header"));
- String title = titles.get(i);
- cell.setCellValue(title);
- titleOrder.put(title, i);
- }
- /*
- * 写入正文
- */
- Iterator<Map<String, Object>> iterator = values.iterator();
- int index = 0; // 行号
- while (iterator.hasNext()) {
- index++; // 出去标题行,从第一行开始写
- row = sheet.createRow(index);
- Map<String, Object> value = iterator.next();
- for (Map.Entry<String, Object> map : value.entrySet()) {
- // 获取列名
- String title = map.getKey();
- // 根据列名获取序号
- int i = titleOrder.get(title);
- // 在指定序号处创建cell
- Cell cell = row.createCell(i);
- // 设置cell的样式
- if (index % 2 == 1) {
- cell.setCellStyle(styles.get("cellA"));
- } else {
- cell.setCellStyle(styles.get("cellB"));
- }
- // 获取列的值
- Object object = map.getValue();
- // 判断object的类型
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- if (object instanceof Double) {
- cell.setCellValue((Double) object);
- } else if (object instanceof Date) {
- String time = simpleDateFormat.format((Date) object);
- cell.setCellValue(time);
- } else if (object instanceof Calendar) {
- Calendar calendar = (Calendar) object;
- String time = simpleDateFormat.format(calendar.getTime());
- cell.setCellValue(time);
- } else if (object instanceof Boolean) {
- cell.setCellValue((Boolean) object);
- } else {
- cell.setCellValue(object.toString());
- }
- }
- }
- /*
- * 写入到文件中
- */
- boolean isCorrect = false;
- try {
- File file = new File(path);
- OutputStream outputStream = new FileOutputStream(file);
- workbook.write(outputStream);
- outputStream.close();
- isCorrect = true;
- } catch (IOException e) {
- isCorrect = false;
- LOGGER.error("write Excel file error : {}", e.getMessage());
- }
- try {
- workbook.close();
- } catch (IOException e) {
- isCorrect = false;
- LOGGER.error("workbook closed error : {}", e.getMessage());
- }
- return isCorrect;
- }
- /**
- * Create a library of cell styles
- */
- /**
- * @param wb
- * @return
- */
- private static Map<String, CellStyle> createStyles(Workbook wb) {
- Map<String, CellStyle> styles = Maps.newHashMap();
- // 标题样式
- CellStyle titleStyle = wb.createCellStyle();
- titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平对齐
- titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直对齐
- titleStyle.setLocked(true); // 样式锁定
- titleStyle.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
- Font titleFont = wb.createFont();
- titleFont.setFontHeightInPoints((short) 16);
- titleFont.setBold(true);
- titleFont.setFontName("微软雅黑");
- titleStyle.setFont(titleFont);
- styles.put("title", titleStyle);
- // 文件头样式
- CellStyle headerStyle = wb.createCellStyle();
- headerStyle.setAlignment(HorizontalAlignment.CENTER);
- headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
- headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); // 前景色
- headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 颜色填充方式
- headerStyle.setWrapText(true);
- headerStyle.setBorderRight(BorderStyle.THIN); // 设置边界
- headerStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
- headerStyle.setBorderLeft(BorderStyle.THIN);
- headerStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- headerStyle.setBorderTop(BorderStyle.THIN);
- headerStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
- headerStyle.setBorderBottom(BorderStyle.THIN);
- headerStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
- Font headerFont = wb.createFont();
- headerFont.setFontHeightInPoints((short) 12);
- headerFont.setColor(IndexedColors.WHITE.getIndex());
- titleFont.setFontName("微软雅黑");
- headerStyle.setFont(headerFont);
- styles.put("header", headerStyle);
- Font cellStyleFont = wb.createFont();
- cellStyleFont.setFontHeightInPoints((short) 12);
- cellStyleFont.setColor(IndexedColors.BLUE_GREY.getIndex());
- cellStyleFont.setFontName("微软雅黑");
- // 正文样式A
- CellStyle cellStyleA = wb.createCellStyle();
- cellStyleA.setAlignment(HorizontalAlignment.CENTER); // 居中设置
- cellStyleA.setVerticalAlignment(VerticalAlignment.CENTER);
- cellStyleA.setWrapText(true);
- cellStyleA.setBorderRight(BorderStyle.THIN);
- cellStyleA.setRightBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleA.setBorderLeft(BorderStyle.THIN);
- cellStyleA.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleA.setBorderTop(BorderStyle.THIN);
- cellStyleA.setTopBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleA.setBorderBottom(BorderStyle.THIN);
- cellStyleA.setBottomBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleA.setFont(cellStyleFont);
- styles.put("cellA", cellStyleA);
- // 正文样式B:添加前景色为浅黄色
- CellStyle cellStyleB = wb.createCellStyle();
- cellStyleB.setAlignment(HorizontalAlignment.CENTER);
- cellStyleB.setVerticalAlignment(VerticalAlignment.CENTER);
- cellStyleB.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
- cellStyleB.setFillPattern(FillPatternType.SOLID_FOREGROUND);
- cellStyleB.setWrapText(true);
- cellStyleB.setBorderRight(BorderStyle.THIN);
- cellStyleB.setRightBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleB.setBorderLeft(BorderStyle.THIN);
- cellStyleB.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleB.setBorderTop(BorderStyle.THIN);
- cellStyleB.setTopBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleB.setBorderBottom(BorderStyle.THIN);
- cellStyleB.setBottomBorderColor(IndexedColors.BLACK.getIndex());
- cellStyleB.setFont(cellStyleFont);
- styles.put("cellB", cellStyleB);
- return styles;
- }
- }
数据导出 写入到excle文件的更多相关文章
- 将页面中表格数据导出excel格式的文件(vue)
近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...
- SQL Server将数据导出到SQL脚本文件
http://www.studyofnet.com/news/list-8883.2-1-4.html 一.SQL Server 2008将数据导出到SQL脚本文件 1.打开SQL Server200 ...
- MongoDB中的数据导出为excel CSV 文件
1.打开命令行,进入我们所安装的mongodb路径下的bin文件夹 2.我们采用bin文件夹下的mongoexport方法进行导出, mongoexport -d myDB -c user -f _i ...
- c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享
string sql = @"select * from T_Excel"; ----------------DataTable Star---------------- ...
- Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库
Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...
- 使用Sql Server Management Studio 2008将数据导出到Sql文件中
最近需要将一个Sql Server 2005数据库中的数据导出,为了方便,就希望能导出成Sql文件,里面包含的数据是由Insert 语句组成的. 在Sql Server Management St ...
- python学习笔记3.2_数据导出
一.data.to_csv:数据导出 1.to_csv:将数据导出为逗号分隔的文件 2.输出为其他分隔符的文件 写入到控制台,并打印:sys.stdout na_rep:对空值进行标注 二.serie ...
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...
- 数据导出至excle
ASP.NET MVC导出Excel 首先下载 NPOI.dll 引用到项目中 建议下载地址:http://download.csdn.net/detail/pukuimin1226/5851747 ...
随机推荐
- Web学习之CSS总结
银角大王武Sir的博客地址 1.positoin属性固定元素的定位类型 说明:这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而无论该元素是什么类型.相 ...
- JSP学习(5)
JSP学习(5) 保存用户状态的两大机制 session对象 Cookie Cookie简介 是Web服务器保存在客户端的一系列文本信息 典型应用 判断注册用户是否已经登录 购物车处理 作用 对特定对 ...
- spring requestbody json
1 @requestbody string param 前台将jsonobject序列化成字符串 后台解析成JsonObject 2 @requestbody map<string,objec ...
- 【vue】vue不足 待补强
83719279 9:56:03尤其是路由 声明周期 父子通信 组件通信 以及钩子函数83719279 9:56:17这些我都不敢用,只能用最原始的方法83719279 9:56:32还有es6 js ...
- Graph Neural Networks for Computer Vision
Graph Neural Networks for Computer Vision I was attracted by this image: This is an inspiring image ...
- 重置Jenkins的构建历史
1.重置单个JOB的构建历史item = Jenkins.instance.getItemByFullName("your-job-name-here") //THIS WILL ...
- EditText控件常用属性
常用属性 android:id——控件ID android:layout_width——控件宽度 android:layout_height——控件高度 android:text——文本内容 andr ...
- Python3解leetcode Reach a Number
问题描述: You are standing at position 0 on an infinite number line. There is a goal at position target. ...
- BZOJ 4836: [Lydsy1704月赛]二元运算 分治FFT
Code: #include<bits/stdc++.h> #define ll long long #define maxn 500000 #define setIO(s) freope ...
- USACO 2006 November Gold Corn Fields
USACO 2006 November Gold Corn Fields 题目描述: Farmer John has purchased a lush new rectangular pasture ...